我正在寻找一种在列表上映射函数的方法,但是能够为每次迭代赋予函数不同的输入.
一个简单的例子如下:
example_func <- function(a, b, c) {
z = a + b + c
return(z)
}
ex_list <- list(5, 14, 32)
Run Code Online (Sandbox Code Playgroud)
在列表中的第一个元素上执行将如下所示:
example_func(ex_list[[1]], 45, 43)
Run Code Online (Sandbox Code Playgroud)
我知道我也可以:
lapply(ex_list, function(x) example_func(x, 45, 43)
Run Code Online (Sandbox Code Playgroud)
但是该示例将在lapply中的每个迭代中使用45和43.我怎么能给它,例如,这三组参数迭代列表中的三个元素?
c(x, 45, 43)
c(x, 3, 33)
c(x, 23, 22)
Run Code Online (Sandbox Code Playgroud)
或者另一个类似的例子是write.csv(),它接受对象,然后写入要写入的文件的名称.
set.seed(123)
df <- data.frame(x = sample(1:10, 1000, replace = TRUE))
df_list <- split(df, df$x)
lapply(df_list, function(x) write.csv(x, arg1))...
Run Code Online (Sandbox Code Playgroud)
我怎么能遍历这个列表并给出指定的名称来喂它?
我之前做过类似的事情,但是它会循环遍历seq_along列表,然后在名称向量中找到该索引.有一个更好的方法吗?
只需将其他值放在另外两个列表中,比如说l2和l3.然后使用Map,这就是它的意思.
ex_list <- list(5, 14, 32)
l2 <- list(45, 3, 23)
l3 <- list(43, 33, 22)
Map(example_func, ex_list, l2, l3)
#[[1]]
#[1] 93
#
#[[2]]
#[1] 50
#
#[[3]]
#[1] 77
Run Code Online (Sandbox Code Playgroud)
这可以对任意数量的函数参数进行,每个函数参数都在自己的列表中设置.
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |