【发布时间】:2019-02-19 12:38:38
【问题描述】:
为什么这行得通而不是 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
【问题讨论】:
-
错误来自 c(i, "diet", "chick")。你想在这里做什么?您正在尝试按 ChickWeight$weight 列中的值以及“饮食”和“小鸡”中的值进行索引,这显然没有意义。