如何正确使用“[”和(l | s)apply从矩阵列表中选择特定列?

考虑以下情况,在对象myList

mat<-矩阵(1:12,ncol=3)
myList<-列表(mat1=mat,mat2=mat,mat3=mat,mat4=mat)

我想从每个矩阵中选择一个特定的列,并对其进行处理。这将获得每个矩阵的第一列,并将其作为矩阵返回(lappy()会给我一个列表也可以)

sapply(myList,函数(x)x[,1])

我似乎不能直接在我的sapply()lappy()咒语中使用[作为函数。?“['告诉我需要提供参数j作为列标识符。那么我做错了什么,这不起作用

lappy(myList,`[`,j=1)
$mat1
[1] 1
$mat2
[1] 1
$mat3
[1] 1
$mat4
[1] 1

我所期望的是:

$mat1
[1] 1 2 3 4
$mat2
[1] 1 2 3 4
$mat3
[1] 1 2 3 4
$mat4
[1] 1 2 3 4

我怀疑我得到了错误的[方法,但我不知道为什么?想法

我认为您得到了[的1参数形式。如果您使用lappy(myList,&`[&`,I=,j=1),它会工作

发表评论