将每次迭代生成的数据框保存在列表中

Posted

技术标签:

【中文标题】将每次迭代生成的数据框保存在列表中【英文标题】:Save the data frame generated at each iteration in a list 【发布时间】:2014-04-10 17:06:51 【问题描述】:

我目前正在使用一个 RFID 阅读器,该阅读器由基于 Web 的 Java 和 php 软件控制。 该软件提供了通过 REST 请求控制阅读器的选项。就我而言,我正在制作一个请求连续更改读取功率的函数;每当有请求时,就会解析检测到您存储项目的 XML。 每次解析 XML 时,我都会将值保存在数据框中。我的问题是: 在“for”循环的每次迭代中,我都会得到一个数据框。我想将数据框保存到列表中,但是这种方式保存不正确。我的功能有什么问题?

if(init_power_value!="NULL" && end_power_value!="NULL")
    if(init_power_value > end_power_value)
      aux1<-end_power_value
      end_power_value<-init_power_value
      init_power_value<-aux1
    
    inventory_DF_List<-list()
    for(i in seq(init_power_value, end_power_value, 0.5))
      response<-REST_GET_START_DEVICE(DF_device_value)
      REST_PUT_POWER_DEVICE(DF_device_value,as.character(i))
      response<-REST_GET_START_DEVICE(DF_device_value)

      DF_READER_CONFIGURATION<-PARSE_READER_CONFIGURATION(DF_device_value)

      DF_inventory_items_List<-PARSE_INVENTORY_items(DF_device_value)
      inventory_DF_List[[i]]<-DF_inventory_items_List
    
  

非常感谢

【问题讨论】:

在不知道所有这些函数的作用的情况下很难判断问题出在哪里。除了列出清单之外,您是否测试了其余部分以查看它是否有效? 这很好奇,我分别测试了每个函数,每个函数都给出了正确的结果。问题是存储在列表中时。例如我做了9次执行迭代,即27到31,增加了0.5,在列表中有31个保存的位置。我不明白为什么。如果你愿意,我可以上传每个函数的结果和完整列表。 我认为问题在于“i”的值可以是float,而不仅仅是int,因为它可以取值为27.5; 28.5;等等。如果“i”取这些值,有什么办法可以保存生成的数据帧? 我意识到一件事,我的“for”如下:for(i in seq(init_power_value, end_power_value, 0.5)) 如果我查看“i”变量所取的值对于,得到这个: NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL [[27]] [1] 27.5 [[28]] [1] 28.5 [ [29]] [1] 29.5 [[30]] [1] 30.5 [[31]] [1] 31 变量“i”有什么方法可以正确取值?:27.0 27.5 28.0 28.5 29.0 29.5 30.0 30.5 31.0 【参考方案1】:

很好地解决您自己的问题 - for 循环中的 i 必须是整数。尝试将inital_powerend_power 序列放在它自己的向量中(我称之为X)并使用seq_along 在for 循环中执行整数,如下所示:

inventory_DF_List<-list()

X<-seq(init_power_value, end_power_value, 0.5)

for(i in seq_along(X))
  response<-REST_GET_START_DEVICE(DF_device_value)
  REST_PUT_POWER_DEVICE(DF_device_value,as.character(i))
  response<-REST_GET_START_DEVICE(DF_device_value)

  DF_READER_CONFIGURATION<-PARSE_READER_CONFIGURATION(DF_device_value)

  DF_inventory_items_List<-PARSE_INVENTORY_items(DF_device_value)
  inventory_DF_List[[i]]<-DF_inventory_items_List

我不知道你想要什么REST_PUT_POWER_DEVICE(DF_device_value,as.character(i))。如果您想要整数,请使用i,但如果您想要序列中的数字,请使用X[i]

【讨论】:

以上是关于将每次迭代生成的数据框保存在列表中的主要内容,如果未能解决你的问题,请参考以下文章

迭代列表并通过函数传递结果并将结果保存在数据框中

R保存data.frame每次迭代

如何将每次迭代的输出保存到结构中

GridSearchCV - 每次迭代保存结果

将实验的所有复制数据保存在anylogic中

问题:将每次输入的信息保存在cookie中,再从cokie中取出值并显示在下拉框中。急需如何保存在cookie中...