1

我正在尝试创建一个 r 循环以在一系列数据集上运行命令。该命令make.design.data来自RMark库。它需要的唯一参数是列表的名称。我有 17 个列表要传递给 make.design.data 这是我一直在尝试使用的代码

DFNames<-c("DFAmerican.Goldfinch", "DFAmerican.Robin","DFBarn.Swallow","DFBobolink",     "DFBrown.head.Cowbird", "DFCedar.Waxwing", "DFCommon.Grackle","DFCommon.Yellowthroat", "DFEuropean.Starling","DFHorned.Lark", "DFKilldeer","DFRed.wing.Blackbird", "DFSavannah.Sparrow", "DFSong.Sparrow","DFTree.Swallow", "DFVesper.Sparrow", "DFYellow.Warbler")

#in my environment each of the names given to DFNames represents a list

for (x in DFNames){
n<-make.design.data(x)
assign(paste0("ddl",x),n)
 }

这给了我错误

  Error in data$model : $ operator is invalid for atomic vectors

任何人都可以建议一种方法来修复我的代码,或者解决这个问题的不同方法吗?

谢谢,裘德

4

1 回答 1

3

相反,您可以制作list实际数据集,而不是其名称的向量。

x <- list(DFAmerican.Goldfinch, ...)

然后你可以使用:

 lapply(x, make.design.data)`.  

或者get在你的 for 循环中使用:

for (x in DFNames) {
  make.design.data(get(x))
}

“R”方式是前者使用列表和apply家庭。然后你可以避免体操assign

于 2013-01-31T21:06:20.993 回答