用于创建具有较小值的矩阵的R代码

用于创建具有较小值的矩阵的R代码,r,R,我刚刚学习了R,我得到了一个关于使用apply and all创建一个包含所有值小于6的列的矩阵的任务 这是矩阵输出的代码 A<-matrix(c(1, 5, 5, 0, 5, 6, 3, 0, 3), nrow = 3, ncol = 3, byrow = TRUE, dimnames = list(c("Row-1", "Row-2", "Row-3"), c("Column 1", "Column 2", "Co

我刚刚学习了R,我得到了一个关于使用apply and all创建一个包含所有值小于6的列的矩阵的任务

这是矩阵输出的代码

A<-matrix(c(1, 5, 5, 0, 5, 6, 3, 0, 3), nrow = 3, ncol = 3, byrow = TRUE, 
         dimnames = list(c("Row-1", "Row-2", "Row-3"), 
                         c("Column 1", "Column 2", "Column 3")))

A这里有一个选项没有
apply

A[, colSums(A < 6) == nrow(A)]
#      Column 1 Column 2
#Row-1        1        5
#Row-2        0        5
#Row-3        3        0
我们使用这个矩阵计算每列的和(
TRUE
等于1,
FALSE
等于0)。这将返回一个命名向量

colSums(A < 6)
#Column 1 Column 2 Column 3 
#       3        3        2
colSums(A<6)
#第1栏第2栏第3栏
#       3        3        2
您正在查找所有值都小于6的列,因此我们需要检查每列中的总和是否等于矩阵的行数

colSums(A < 6) == nrow(A)
#Column 1 Column 2 Column 3 
#    TRUE     TRUE    FALSE
colSums(A<6)=nrow(A)
#第1栏第2栏第3栏
#真假
然后使用该逻辑向量对列进行子集划分

A[, colSums(A < 6) == nrow(A)]
A[,colSums(A<6)=nrow(A)]
colSums(A < 6) == nrow(A)
#Column 1 Column 2 Column 3 
#    TRUE     TRUE    FALSE
A[, colSums(A < 6) == nrow(A)]