如何使用类似于矩阵索引的方法对 R 中的列表进行子集化?
How to subset lists in R using something similar to matrix indexation?
当我想要矩阵或数据框的所有行和特定列时,我们使用 df[ ,"column x"]
。有什么东西可以快速提取列表中每个数据框的第 i 个元素吗?
例如,获取下面列表中每个矩阵的第2行
example <- list(matrix(1:9,3,3) , matrix(11:19,3,3), matrix(21:29,3,3))
我想知道是否存在类似 example[[:]][2,]
的东西。
请不要提出带有循环或 s(l)apply 的解决方案。
谢谢,
怎么样
lapply(example, function(x) x[2,])
我知道你特别要求没有人给你正确答案,但我没办法。这就是你在 R 中的做法。
可能是我发现了漏洞,你没说我不能用Map()
Map(function(x) x[2,], example)
一般来说,如果没有任何类型的 *apply
(提议的 Map
是 mapply
的别名),您将无法执行此操作。对于您的特定示例,您可以 rbind
将所有矩阵放在一起,然后将每个矩阵的第二行通过:
do.call(rbind,example)[seq(2,by=3,length.out=length(example)),]
当然,只有当您的列表的矩阵可以 rbind
在一起时,上述方法才有效。
当我想要矩阵或数据框的所有行和特定列时,我们使用 df[ ,"column x"]
。有什么东西可以快速提取列表中每个数据框的第 i 个元素吗?
例如,获取下面列表中每个矩阵的第2行
example <- list(matrix(1:9,3,3) , matrix(11:19,3,3), matrix(21:29,3,3))
我想知道是否存在类似 example[[:]][2,]
的东西。
请不要提出带有循环或 s(l)apply 的解决方案。
谢谢,
怎么样
lapply(example, function(x) x[2,])
我知道你特别要求没有人给你正确答案,但我没办法。这就是你在 R 中的做法。
可能是我发现了漏洞,你没说我不能用Map()
Map(function(x) x[2,], example)
一般来说,如果没有任何类型的 *apply
(提议的 Map
是 mapply
的别名),您将无法执行此操作。对于您的特定示例,您可以 rbind
将所有矩阵放在一起,然后将每个矩阵的第二行通过:
do.call(rbind,example)[seq(2,by=3,length.out=length(example)),]
当然,只有当您的列表的矩阵可以 rbind
在一起时,上述方法才有效。