假设我有一个带两个向量的函数:
someFunction <- function(x,y){
return(mean(x+y));
}
并说我有一些数据
toy <- data.frame(a=c(1,1,1,1,1,2,2,2,2,2), b=rnorm(10), c=rnorm(10))
我想要做的是为someFunction
的每个值返回函数toy$a
的结果,即我希望获得与代码相同的结果
toy$d <- toy$b + toy$c
result <- aggregate(toy$d, list(toy$a), mean)
然而,在现实生活中,函数someFunction 方式更复杂,而需要两个输入,因此这个玩具示例中的解决方法是不可能的。所以,我想做的是:
v1
,v2
,然后返回someFunction(v1,v2)
答案 0 :(得分:2)
library(data.table)
toy <- data.table(toy)
toy[, list(New_col = someFunction(b, c)), by = 'a']
答案 1 :(得分:1)
Checkout dplyr
包,特别是group_by
和summarize
个功能。
假设您要为someFunction(b, c)
的每个值计算a
,语法看起来像
library(dplyr)
data %>% group_by(a) %>% summarize(someFunction(b, c))