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

时间:2018-10-31 14:48:07

标签: 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", "Column 3")))

但是,接下来我要如何调用小于6的值 然后函数应用我用如下

apply(A, 2, A<6)

1 个答案:

答案 0 :(得分:1)

这里是没有apply的一个选项。

A[, colSums(A < 6) == nrow(A)]
#      Column 1 Column 2
#Row-1        1        5
#Row-2        0        5
#Row-3        3        0

说明

第一步是创建一个逻辑矩阵,将TRUE分配给所有<6的值

A < 6
#      Column 1 Column 2 Column 3
#Row-1     TRUE     TRUE     TRUE
#Row-2     TRUE     TRUE    FALSE
#Row-3     TRUE     TRUE     TRUE

我们使用此矩阵并计算每列的总和(TRUE等于1,FALSE等于0)。这将返回一个命名向量。

colSums(A < 6)
#Column 1 Column 2 Column 3 
#       3        3        2

您正在寻找所有值均小于6的列,因此我们需要检查每一列的总和是否等于矩阵的行数。

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

然后,此逻辑向量用于子集化列。

A[, colSums(A < 6) == nrow(A)]