我正在使用 expand.grid
生成向量的所有元素对,例如:
v <- 1:3
expand.grid(v,v)
这使:
Var1 Var2
1 1 1
2 2 1
3 3 1
4 1 2
5 2 2
6 3 2
7 1 3
8 2 3
9 3 3
现在,说我想要同样的东西,但我用的是三胞胎
expand.grid(v,v,v)
我将如何将其推广到 n 元组以便我可以使用
new.expand.grid(v,5)
并得到 expand.grid(v,v,v,v,v)
的结果?
最佳答案
expand.grid
可以拿list
作为它的输入,那么 replicate
怎么样? ?
expand.grid(replicate(3, v, simplify=FALSE))
为了好玩,作为一个函数(虽然我知道你会知道如何做到这一点):
new.expand.grid <- function(input, reps) {
expand.grid(replicate(reps, input, simplify = FALSE))
}
new.expand.grid(c(1, 2), 4)
# Var1 Var2 Var3 Var4
# 1 1 1 1 1
# 2 2 1 1 1
# 3 1 2 1 1
# 4 2 2 1 1
# 5 1 1 2 1
# 6 2 1 2 1
# 7 1 2 2 1
# 8 2 2 2 1
# 9 1 1 1 2
# 10 2 1 1 2
# 11 1 2 1 2
# 12 2 2 1 2
# 13 1 1 2 2
# 14 2 1 2 2
# 15 1 2 2 2
# 16 2 2 2 2
关于r - expand.grid 的动态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409601/