【发布时间】:2019-11-10 15:44:31
【问题描述】:
我有两个不同长度的列表,并希望生成所有排列以通过 R 中的函数运行。我可以使用 for 循环(见下文)但我不喜欢使用 rbind 和cbind。我无法让它与*apply 或purrr 之类的map2 函数一起使用,因为它们抱怨长度不等。
最干净的 tidyverse 友好的方式是什么?
下面的简化示例:
myfun = function(a,b){
return(a*b)
}
xvalues = c(1,2,3)
yvalues = c(10,20,30,40)
merged = c()
for (x in xvalues){
z = myfun(x,yvalues)
merged = rbind(merged,(cbind(x,yvalues,z)))
}
df = data.frame(merged)
这会生成所需的数据帧:
x yvalues z
1 1 10 10
2 1 20 20
3 1 30 30
4 1 40 40
5 2 10 20
6 2 20 40
7 2 30 60
8 2 40 80
9 3 10 30
10 3 20 60
11 3 30 90
12 3 40 120
【问题讨论】: