我对R相对较新,花费了一些时间熟悉基本概念之后,现在正在尝试编写我的第一个函数。我想使用该函数对数据框列表进行一些简单的计算。我的数据是这样的(我有超过100个dataframes,所以它被简化):R:将函数应用于数据框列表时出错
d1 <- data.frame(bp1=c(1,2,3),bp2=c(4,5,6), lp=c(4,5,6))
d2 <- data.frame(bp1=c(3,2,1),bp2=c(6,5,4), lp=c(2,1,6))
my.list <- list(d1, d2)
我想要做的是采取10^- 一次柱,并用在第3列中的值乘。然后我想根据第一列汇总结果。我的功能看起来是这样的:
bp_calc <- function(x) {
bp1 <- x[[i]][1]
lp <- x[[i]][3]
10^-lp * lp -> x[[i]]$p_logp
aggregate(x[[i]]$p_logp ~ bp1, data = x, sum) -> result
return(result)
}
要使用该功能对我的数据,我用:
lapply(my.list,bp_calc)
然而,这引发错误:错误.subset2(X,I,准确=确切):下标越界。我当然试图谷歌和这个论坛,但我不明白我做错了什么。帮助将不胜感激,谢谢!
和哪里'i'发挥作用。我至少可以通过改变'bp1 < - x [[i]] [1]来运行它; lp < - x [[i]] [3]'到'bp1 < - x [,1]; lp < - x [,3]'并移除其他'[[i]]的 – rawr 2014-11-08 16:59:16
非常感谢@rawr!它工作得很好! – lpoulsen 2014-11-09 12:21:54