繁体   English   中英

r在两个列表上应用函数

[英]r apply function over two lists

我有两个向量。 我想对这两个向量的每种可能组合应用一个函数。 为了说明,假设我有以下两个向量。

pets <- c('dog','cat','lemur')
fruit <- c('banana','apple','papaya')

我想将一个函数应用于以下变量组合,并保存每个函数调用的结果以及变量值。

[dog, banana]
[dog, apple]
[dog, papaya]
[cat, banana]
[cat, apple] etc...

在r中实现这一目标的最捷径是什么? 感觉这应该成为应征家庭的工作。

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"

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已经包含两个向量的可能组合。 仅当您要格式化它们时,下一行才是必需的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM