gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:56:19 25 4
gpt4 key购买 nike

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

这里的例子是乘法(只是为了说明这个想法)。我想 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com