将每次迭代生成的数据框保存在列表中
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_power
到end_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]
。
【讨论】:
以上是关于将每次迭代生成的数据框保存在列表中的主要内容,如果未能解决你的问题,请参考以下文章