想想看,我有一个函数f(x,y)
,它有两个参数,两个列表我们可以用purrr(不是同时)迭代两个列表吗?
x_var = list('x','y','z')
- 和
y_var = list('a','b')
是否有一个purrr
功能,让我来遍历一个元素的每个组合x_var
和y_var
中的一个元素?也就是说,做f(x,a)
,f(x,b)
,f(y,a)
,f(y,b)
等
通常的解决办法是写一个循环,但我不知道是否有更简洁这里(可能与purrr
。
谢谢!
想想看,我有一个函数f(x,y)
,它有两个参数,两个列表我们可以用purrr(不是同时)迭代两个列表吗?
x_var = list('x','y','z')
y_var = list('a','b')
是否有一个purrr
功能,让我来遍历一个元素的每个组合x_var
和y_var
中的一个元素?也就是说,做f(x,a)
,f(x,b)
,f(y,a)
,f(y,b)
等
通常的解决办法是写一个循环,但我不知道是否有更简洁这里(可能与purrr
。
谢谢!
电话可以使用的cross*
功能之一0沿:
map(cross2(x_var, y_var), unlist)
可以嵌套你到map
library(purrr)
map(x_var, function(x) {
map(y_var, paste, x)
})
[[1]]
[[1]][[1]]
[1] "a x"
[[1]][[2]]
[1] "b x"
[[2]]
[[2]][[1]]
[1] "a y"
[[2]][[2]]
[1] "b y"
[[3]]
[[3]][[1]]
[1] "a z"
[[3]][[2]]
[1] "b z"
碱基r功能expand.grid
功能在这里工作
expand.grid(x=x_var, y=y_var) %>% {paste(.$x, .$y)}
谢谢!基地R救援 –
如果x_var
和y_var
是原子矢量或阵列,且函数返回已知长度的原子矢量,可以使用碱一个R函数outer
:
outer(x_var, y_var, FUN = f)
这将返回一个阵列dimensi ons c(dim(x_var), dim(y_var))
。维度名称的组合类似。例如:
x_var <- setNames(1:3, c("a", "b", "c"))
y_var <- setNames(4:5, c("d", "e"))
outer(x_var, y_var, '+')
# d e
# a 5 6
# b 6 7
# c 7 8
不错的一个!我想知道是否有相同的反义词?我喜欢它的输出矩阵 –
不错的把戏我的男人 –