我想以以下方式使用逻辑矩阵对数字向量进行子集化:给定向量y
y <- c(4,8,1,3,5,7)
还有一个逻辑矩阵lmat
lmat <- t(matrix(c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE), ncol = 6))
它看起来像这样
> lmat
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] FALSE FALSE FALSE FALSE FALSE FALSE
[2,] TRUE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE TRUE FALSE FALSE FALSE FALSE
[4,] TRUE TRUE FALSE FALSE FALSE FALSE
[5,] FALSE FALSE TRUE FALSE FALSE FALSE
[6,] TRUE FALSE TRUE FALSE FALSE FALSE
我想应用某个名为 x() 的函数,根据 lmat 的行对 y 进行子集操作,并返回一个列表。因此,x(y) 将返回:
[[1]]
numeric(0)
[[2]]
[1] 4 9
[[3]]
[1] 8
[[4]]
[1] 4 8 9
[[5]]
[1] 1
[[6]]
[1] 4 1 9
我还在学习apply函数,尽管我曾试图使用其中一种函数来获得想要的结果,但我认为通过apply或sapply也可以实现。我的基本需求是:
y[lmat[1,]]
y[lmat[2,]]
y[lmat[3,]]
但是LMAT很大,我认为有一种方法可以不用循环来完成。谢谢。
y
中有7个值,但只有lmat
中的6行? - thelatemail