【发布时间】:2018-11-19 17:54:39
【问题描述】:
我在列表a 中有数据框,我想使用循环将它们保存为rda 并写入dta。我不明白为什么我会收到找不到对象数据框的错误消息:
for (f in a) {
for (name in 1:length(filenames)) {
save(as.data.frame(f),file = paste("~/Dropbox/Data_Insert/Panels/",name,end_rda,sep=""))
write.dta(as.data.frame(f),file = paste("~/Dropbox/Data_Insert/Panels/",name,end_dta,sep=""))
}
}
Error in save(as.data.frame(f), file = paste("~/Dropbox/Data_Insert/Panels/", :
object ‘as.data.frame(f)’ not found
那么f,这将索引列表中的数据框?我使用了as.data.frame(f),因为当我只使用f 时,我收到了消息:
The object "dataframe" must have class data.frame
我把代码改成了for f in a,但是还是返回了一个错误,说as.data.frame(f) not found。
【问题讨论】:
-
在
for (f in 1:length(a))循环变量f变成1、2等等。也许你想要for (f in a) -
@RuiBarradas 我仍然收到消息:找不到对象'as.data.frame(f)'
-
是的,在 R 中,您有两个使用 for 循环的选择。(a) 您可以循环索引并使用索引,
for (f in 1:length(a)) {save(as.data.frame(a[[f]]))...或 (b) 循环对象本身for (f in a) {save(as.data.frame(f))...。两者各有利弊,但你必须选择一个。你上面的代码试图同时做这两个。 -
另外,为什么这里有嵌套循环?看来您在
filenames中的每个name下都保存了相同f数据框的副本? -
@Gregor 是的,我有与列表中每个数据帧匹配的文件名