r - 如何同时提取列表的不同元素

标签 r

我有一个函数,它的参数是一个列表。此参数针对不同的值运行。我原来的功能很困难。因此,我发布了一个类似于我的部分功能的示例。

这里的例子是乘法(只是为了说明这个想法)。我想 for不能在这里工作,因为,for循环逐个元素地获取,而我需要同时获取列表的两个不同元素

所有的想法是,

如何制作这部分代码xxx <- myfun(z[[1]][k,j],z[[2]][k,i]))适用于任意数量的元素,而不是手动执行。
例如,如果我有 3矩阵,然后,我会写这样的代码:xxx <- myfun(z[[1]][k,j],z[[2]][k,i], z[[3]][k,j]) .如何自动而不是手动进行。

例如,z是一个矩阵列表。我想为这些矩阵的特定值运行我的函数。也就是说,每次我希望我的函数选择矩阵的特定元素时。这是我的代码:

x <- c(0,1,2,
       0,0,1,
       0,0,0)
x <- matrix(x,3,3)

y <- c(0,2,3,
       0,0,1,
       0,0,0)
y <- matrix(y,3,3)
z <- list(x,y)



     myfun <- function(f=list()){
  s <- length(f)
  xy <- list()
  for(i in 1:s){
    xy[[i]] <- 2*f[[i]]

  }
  xy
}

这是我的尝试。

请注意,

在这里,我希望函数从矩阵中获取特定值 xy并将它们插入我的函数中的列表中。我想让它适用于列表中任意数量的元素。也就是说,有时,我有 3矩阵或 4 .因此,矩阵的数量不是固定的。

## 我尝试了以下操作并且效果很好,但是,如何使其适用于任意数量的元素。
 xxx <- list()
for(i in 1:2){
for(k in 1:3){
  for(j in 1:3){
    xxx[[i]] <- myfun(f=list(z[[1]][1,2],z[[2]][1,2]))
  }
}
}

请问有什么帮助吗?

最佳答案

如果我正确理解以下内容

All the idea is how can I make this xxx <- myfun(z[[1]][k,j],z[[2]][k,i], z[[3]][k,j]) works for arbirtary number of length, automatically



这应该是你正在寻找的:
xxx <- myfun(f=lapply(z, function(x){x[k,j]}))

对于 k=1 和 j=2
xxx <- myfun(f=lapply(z, function(x){x[1,2]}))

返回与您提供的示例相同。

关于r - 如何同时提取列表的不同元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49146937/

相关文章:

r - 如何缩短日期时间并仅保留时间部分

r - 使用 ISO-8859-1 编码而不是 UTF-8 导出 csv

r - 将一个或多个系数设置为特定整数

r - 以最快的方式使用数组索引按降序打印矩阵的排序元素

r - 如何在集群上使用 doRedis 和 caret?

r - R中的函数参数定义问题

r - R 中的 Bquote 和 quote ... 我如何找到更多信息?

r - 将特殊字符转换为纯文本

r - 向变量添加描述性文本

r - 如何将带有百分比符号的字符列转换为数字?