我有两个向量。我想将函数应用于这两个向量的每个可能组合。为了说明,假设我有以下两个向量。
pets <- c('dog','cat','lemur')
fruit <- c('banana','apple','papaya')
我想将函数应用于以下变量组合,并将每个函数调用的结果与变量值一起保存。
[dog, banana]
[dog, apple]
[dog, papaya]
[cat, banana]
[cat, apple] etc...
在r中实现这一目标的最佳方法是什么?感觉应该是申请家庭的工作。
答案 0 :(得分:2)
levels(interaction(pets, fruit, sep = ', '))
输出继电器:
[1] "cat, apple" "dog, apple" "lemur, apple"
[4] "cat, banana" "dog, banana" "lemur, banana"
[7] "cat, papaya" "dog, papaya" "lemur, papaya"
答案 1 :(得分:1)
expand.grid
就是你想要的。 ?expand.grid
声明:
从提供的矢量或因子的所有组合创建数据框。
所以你可以这样做:
e <- expand.grid(pets, fruit)
df <- data.frame(col=apply(e,1,function(x) paste0("[",x[1],", ",x[2],"]")))
# OR if brackets are not important
# data.frame(col=apply(e,1,paste,collapse=", "))
# col
# 1 [dog, banana]
# 2 [cat, banana]
# 3 [lemur, banana]
# 4 [dog, apple]
# 5 [cat, apple]
# 6 [lemur, apple]
# 7 [dog, papaya]
# 8 [cat, papaya]
# 9 [lemur, papaya]
请注意,数据框e
已包含两个向量的可能组合。只有在您想要格式化下一行时才需要下一行。