【发布时间】:2015-06-23 20:14:22
【问题描述】:
我正在尝试对使用扩展网格创建的数据集的一系列点进行数值模拟。如果可能的话,我想使用plyr 或dplyr。但是,我不明白语法。
下面的代码是否有一点小扰动,将 x 和 y 的值分别应用于 f?
f <- function(x, y) {
A <- data_frame(a = x*runif(100) - y)
B <- data_frame(b = A$a - rnorm(100)*y)
sum(A$a) - sum(B$b)
}
X <- expand.grid(x = 1:10, y = 2:8)
X %>% mutate(z = f(x, y))
我曾希望 ddply 可以让这更容易。
编辑:这似乎符合预期:
X %>% ddply(.(x, y), transform, z = f(x, y))
【问题讨论】:
-
你遇到了什么错误?
-
有分组吗?还是你只是对每一行都做同样的事情?
-
我想对每一行做同样的事情:使用每一行中的值来评估函数。我想我在
sum上绊倒了。没有分组。 -
没有 group_by 的东西,你也可以只使用普通的 mapply 函数,而不是 ddply 或 dplyr。
X$z<-mapply(f,X$x,X$y) -
另外,你函数中的
data_frames 没有做任何有用的事情,删除它们会让你的函数更有效率。