我只是学习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)
答案 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)]