使用lapply时出现未定义的列错误

时间:2019-02-19 12:38:38

标签: r lapply

为什么这样做有效,但不适呢?

使用内置的基本R ChickWeight数据:

names(ChickWeight)<-tolower(names(ChickWeight)) 

如果我只想为1列“时间”建立一个相关性,则此方法有效:

library(reshape)
cor(cast(melt(ChickWeight[,c("time","diet","chick")],id.vars=c("chick","diet")),chick~diet))

当我尝试将相同的内容应用于“时间”和“重量”时,即列1:2:

lapply(as.list(ChickWeight[,c(1:2)]), FUN=function(i){
cor(cast(melt(ChickWeight[,c(i,"diet","chick")], id.vars=c("chick","diet")),chick~diet))
})

因此,功能部分本身可以很好地工作的事实使我觉得使用lapply这样的事情我不了解。我收到此错误:

Error in `[.data.frame`(ChickWeight, , c(i, "diet", "chick")) : 
  undefined columns selected 

1 个答案:

答案 0 :(得分:1)

啊,我现在知道您要在这里做什么。

替换:

lapply(as.list(ChickWeight[,c(1:2)]), .........

使用

lapply(names(ChickWeight)[1:2], .............

当您想要的是列名时,您正在传递列值。