如何使用 lapply 函数对 R 矩阵中的列进行逻辑运算?

How to use lapply functions for logical operations across columns in a matrix in R?

有没有办法在矩阵中使用 apply 来比较具有逻辑运算符的列之间的项目?

n.col <- 2
A <- matrix(sample(1:6, 1000*n.col, replace = TRUE), 1000 , ncol=n.col)

对于每一行,我想检查跨列的值是否相同。对于 n.col 的小值,我只是这样做:

A[ ,1] == A[ ,2]

但这对于大型 n.cols 来说非常笨重。我可以用循环做一些丑陋的事情,但我很想知道是否有某种方法可以为此使用 apply/lapply

您可以将 apply 用于矩阵的 rows/columns:

cols.equal <- apply(A, 1, function(x) length(unique(x)) == 1)

编辑: 如果您的应用程序涉及浮点数,length(unique(x)) 将无法正常工作,因为数字将 "almost" 相同,但唯一元素的数量将大于 1。如果是这种情况,您可以将 apply 中的函数替换为 答案在这里: Test for equality among all elements of a single vector