假设我有一个由三列组成的数据框
df1< - data.frame(a = runif(10),b = runif(10),c = runif(10),d = runif(10))并且希望拥有所有组合的产品列,除了……
我们可以用 combn 创建一次取2个数据帧的名称组合,然后编写一个自定义函数,该函数对数据帧进行子集化并相互相乘。
combn
combn(names(df1), 2, function(x) df1[x[1]] * df1[x[2]], simplify = FALSE)
此命令返回6个数据帧的列表( a*b , a*c , a*d , b*c , b*d , c*d )对于给定的例子。
a*b
a*c
a*d
b*c
b*d
c*d
我们可以用 combn 直接在数据集上,指定 m 如2选择成对的列组合,请指定 FUN 如 Reduce 带有参数 f 如 * 乘以每个成对列的相应元素
m
FUN
Reduce
f
*
combn(df1, 2, FUN = Reduce, f = `*`)