【发布时间】:2023-01-24 21:50:08
【问题描述】:
假设我有一个包含三个变量的函数,例如
f <- function(x,y,z) x*y*z
现在,给定三个数据集
X <- seq(1,10)
Y <- seq(11,20)
Z <- seq(21,30)
我想有效地评估来自X,Y,Z 的所有元素组合的f。最聪明的方法是什么? (实际上,我的功能比较复杂,集合很大)。
【问题讨论】:
标签: r
假设我有一个包含三个变量的函数,例如
f <- function(x,y,z) x*y*z
现在,给定三个数据集
X <- seq(1,10)
Y <- seq(11,20)
Z <- seq(21,30)
我想有效地评估来自X,Y,Z 的所有元素组合的f。最聪明的方法是什么? (实际上,我的功能比较复杂,集合很大)。
【问题讨论】:
标签: r
使用 expand.grid 创建组合并迭代生成的数据框:
f <- function(x,y,z) x*y*z
X <- seq(1,10)
Y <- seq(11,20)
Z <- seq(21,30)
df = expand.grid(X, Y, Z)
for (i in 1:nrow(df)) {
print(f(df[i, 1], df[i, 2], df[i, 3]))
}
【讨论】:
也许这个
X <- 1:3
Y <- 4:6
Z <- 7:9
apply(expand.grid(X,Y,Z), 1, function(x) prod(x))
[1] 28 56 84 35 70 105 42 84 126 32 64 96 40 80 120 48 96 144 36
[20] 72 108 45 90 135 54 108 162
【讨论】: