gpt4 book ai didi

在 mapply 中返回多个列表

转载 作者:行者123 更新时间:2023-12-04 12:13:14 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Force mapply to return a list?

(2 个回答)


7年前关闭。




我有一个函数,我正在使用 mapply 跨数据框或矩阵 (df) 列表应用该函数。该函数根据原始数据帧的某些转换标准输出四种不同类型的数据帧(例如 a:d),但我遇到了问题,因为函数只会让我输出一种。我试图将它们整理成一个列表,但是当我运行一个简化的函数时,我得到了这个。

df1<-matrix(rnorm(10), nrow=10, ncol=10)
df2<-df1
df<-list(df1, df2)

func<-function (x) {
a<-x*1
b<-x*2
c<-x*3
d<-x*4
return(list(a,b,c,d))
}

finalresult<-mapply(func, x=df)

str(finalresult)

List of 8
$ : num [1:10, 1:10] -3.211 -0.121 -0.2 0.491 1.118 ...
$ : num [1:10, 1:10] -6.422 -0.242 -0.4 0.982 2.235 ...
$ : num [1:10, 1:10] -9.633 -0.362 -0.6 1.473 3.353 ...
$ : num [1:10, 1:10] -12.844 -0.483 -0.8 1.964 4.471 ...
$ : num [1:10, 1:10] -3.211 -0.121 -0.2 0.491 1.118 ...
$ : num [1:10, 1:10] -6.422 -0.242 -0.4 0.982 2.235 ...
$ : num [1:10, 1:10] -9.633 -0.362 -0.6 1.473 3.353 ...
$ : num [1:10, 1:10] -12.844 -0.483 -0.8 1.964 4.471 ...
- attr(*, "dim")= int [1:2] 4 2

在这种情况下,您可以看到它只是为我提供了来自 df1 的四个输出数据帧 (a:d) 的列表,然后立即附加了来自 df2 的下一组输出。我想要一个输出,其中每个数据框转换都放在一个列表中,我可以在其中按类别访问它(例如 finalresults$a)。任何帮助将不胜感激!

谢谢,
-切尔西

最佳答案

怎么样:

使用 mapply但不要简化。

result1 <- mapply(func, x=df, SIMPLIFY=FALSE)

迭代索引(假设结果中的两个列表长度相同);每个索引 i , 使用 lapply拉出 i result1 中每个列表的第 th 个元素.
 result2 <- lapply(seq_along(result1[[1]]),
function(i) lapply(result1,"[[",i))

我尝试进一步缩短/混淆它(即消除定义匿名函数的需要),但嵌套 lapply ■ 我不太清楚如何使它工作。

关于在 mapply 中返回多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071188/

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