如何在r中的$符号后通过lappy循环列表

时间:2015-06-21 04:54:49

标签: r loops lapply

我一直试图弄清楚如何应用应用函数plyr就在那里。我稍后会了解到的。但是,我需要帮助。我可以通过实际键入对象名称获得输出,但我试图通过它循环列表。代码如下:

    list<-noquote(c("T","AAVL"))
lapply(list,function(i) xts(l.df$i[,-1:-5],order.by=as.POSIXct(rownames(l.df$i))))

如果我只是做xts(l.df$T[,-1:-5],order.by=as.POSIXct(rownames(l.df$T))

我得到了我需要的xts文件。有人可以帮我把没有引号的名字循环到lapply()中,这样我就能为列表中的众多元素做这项工作吗?谢谢!

2 个答案:

答案 0 :(得分:0)

有多种方法可以在R中对列表进行子集化。有关更详细的讨论,请参阅https://ramnathv.github.io/pycon2014-r/learn/subsetting.htmlhttp://adv-r.had.co.nz/Subsetting.html

但是,在您的情况下,问题是美元运算符$采用固定字符串而不是变量名称。因此myList[["item"]]myList$item是等效的。在您给出的示例中,您尝试查找data.frame的成员名为&#34; i&#34;而不是变量i引用的成员。您使用的noquote类纯粹影响字符向量的打印;它对子集化没有影响。

您的代码版本在您的评论中解释时无效。它之所以有效,是因为您现在将名称存储在i中的列进行了子集化,而不是名为&#34; i&#34;

的列。

答案 1 :(得分:0)

我想向数据框中添加 106 个新列,这些列是 df ofcourse 的长度并用零 (0) 填充。在这种情况下,我将如何遍历 i:

geo <- unique(df$geo)

geo
[1] "AL" "AT1" "AT2" "AT3" "BE1" "BE2" "BE3"

for(i in geo) {
 df$i <- v(0,length(df)
} 

Emil Krabbe 2 分钟前编辑