r - 通过 R 中的矩阵列表进行索引

标签 r list matrix indexing

考虑以下结构的矩阵列表

m1 <- matrix(floor(runif(156,min=0, max=10)), ncol=12)
m2 <- matrix(floor(runif(120,min=0, max=10)), ncol=12)
m3 <- matrix(floor(runif(120,min=0, max=10)), ncol=12)
m4 <- matrix(floor(runif(204,min=0, max=10)), ncol=12)
l1<-list(m1,m2,m3,m4)

如何恢复所有列出的矩阵中某个范围的列表?我知道一个有效的解决方案,如下例所示:

lapply(l1, function(x)x[,seq(1,12,2)])

但是我是 R 新手,发现索引列表很难理解。任何人都可以用新手术语解释和/或提供替代解决方案吗?在分析数据时,我经常陷入类似的情况,并浪费很长时间进行刷新。提前致谢。

最佳答案

我会让你的代码更清晰一点:

lapply(l1, function(x) {
    x[,c(TRUE, FALSE)]
}

那么发生了什么?您获取列表:l1 并将其传递给lapplylapply 将您的列表分解为列表项,并将每个列表项迭代地传递给您在 lapply 的第二个参数中定义的函数。该函数有一个参数x,它成为列表l1中的单个项目。这些部分:x 现在可以由函数中的代码进行处理。您希望从这些矩阵中提取每隔一列,因此您在该矩阵 x 中索引第一、第三、第五等。

x 的索引本身是[行,列],因此您通过在逗号之前不指定任何内容来请求所有行,并通过指定c(TRUE, FALSE ) 位于逗号之后。向量 c(TRUE, FALSE) 会重复与矩阵中的列数一样长的长度,因此您不必使用:seq(1, 12, 2) code> 来获取你想要的索引。

在我看来,这个问题没有其他明显的解决方案,您已经自己指定了最佳解决方案:)

关于r - 通过 R 中的矩阵列表进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48395550/

相关文章:

r - 最接近 R 中特定列的值

r - 通过基于 R 中向量的值选择行的新子集

linux - bash 中文件列表的良好输出

python - 从列表或元组中显式选择项目

python - 重新组合或重新组织字典中的键?

matrix - Julia如何从范围内快速按行生成矩阵

r - R 中的绘图() : ylim range don't match the y axis range on graph

r - 用 3 个点定义 S4 方法

C 编程 : Sum of third upper anti-diagonal a squared matrix , 急需帮助,请

python - 如何在 python 中定义多维数组?