提取r中一个列表中一组矩阵的最小矩阵
我有一个R中有N个矩阵的列表:提取r中一个列表中一组矩阵的最小矩阵,r,R,我有一个R中有N个矩阵的列表: mylist <- list(a=matrix(rnorm(1:10), ncol=2), b=matrix(rnorm(1:10), ncol=2), c=matrix(rnorm(1:10), ncol=2)) 但我得到了原来的名单。 有什么建议吗 多谢各位。 干杯。您可以使用Reduce # creating a list of matrices set.seed(1) mylist <- list(a=matrix(rnor
mylist <- list(a=matrix(rnorm(1:10), ncol=2), b=matrix(rnorm(1:10), ncol=2), c=matrix(rnorm(1:10), ncol=2))
但我得到了原来的名单。
有什么建议吗
多谢各位。
干杯。您可以使用
Reduce
# creating a list of matrices
set.seed(1)
mylist <- list(a=matrix(rnorm(1:10), ncol=2),
b=matrix(rnorm(1:10), ncol=2),
c=matrix(rnorm(1:10), ncol=2))
# getting min
> Reduce("pmin", mylist)
[,1] [,2]
[1,] -0.6264538 -0.8204684
[2,] 0.1836433 -0.1557955
[3,] -0.8356286 -1.4707524
[4,] -2.2146999 -0.4781501
[5,] 0.3295078 -0.3053884
#创建矩阵列表
种子(1)
mylist Reduce(“pmin”,mylist)
[,1] [,2]
[1,] -0.6264538 -0.8204684
[2,] 0.1836433 -0.1557955
[3,] -0.8356286 -1.4707524
[4,] -2.2146999 -0.4781501
[5,] 0.3295078 -0.3053884
尝试以下解决方案:
am <- matrix(rnorm(1:10), ncol=2)
bm <- matrix(rnorm(1:10), ncol=2)
cm <- matrix(rnorm(1:10), ncol=2)
mylist <- list(a=am, b=bm, c=cm)
working <- pmin(am, bm, cm) # What you stated is working
new <- do.call(pmin, mylist) # Calling for all elements of a list
identical(working, new) # verify if the new answer outputs the same
amrnorm(1:10,ncol=2)
不是有效的R语法。请编辑你的帖子。如果使用随机数据,请设置固定种子。同时提供您提供的示例数据的预期输出。感谢您的回复。然而,这并不能解决我的问题。我希望结果是一个与a、b和c维数相同的矩阵,但每个[I,j]中都有最小值。pmin(a,b,c)的结果提供了一个清楚的例子,再次说明了我在寻找的是什么。@MilloMarinE你说的pmin(a,b,c)
有效,而Reduce(“pmin”,mylist)
给出了与pmin(a,b,c)
相同的结果,所以我不理解你的观点。它甚至给出了与原始矩阵相同的维数。对不起,出于某种原因,我重复了错误的问题。你的回答正是我所需要的。非常感谢。@MilloMarinE您可以通过向上投票正确答案并通过单击答案旁边的勾号接受更好地解决问题的答案来说“谢谢”。完成。谢谢,这正是我需要的。多谢各位@米洛马林谢谢你的反馈!:)@MilloMarinE,你没有回答错误的问题,另一个人的答案只是被快速编辑(如果你没有关闭浏览器,你可以通过返回页面看到旧答案)。这就是后来发生的事情。对不起,我弄糊涂了。再次感谢你@没问题!这不是你的错:)
am <- matrix(rnorm(1:10), ncol=2)
bm <- matrix(rnorm(1:10), ncol=2)
cm <- matrix(rnorm(1:10), ncol=2)
mylist <- list(a=am, b=bm, c=cm)
working <- pmin(am, bm, cm) # What you stated is working
new <- do.call(pmin, mylist) # Calling for all elements of a list
identical(working, new) # verify if the new answer outputs the same