我正在尝试编写代码来比较几列的值,而且我不提前知道我将拥有多少列。数据如下所示:
X Val1 Val2 Val3 Val4
A 1 1 1 2
B NA 2 2 2
C 3 3 3 3
代码应返回A行和B行的Fail,以及行C的Pass,但需要能够处理不断变化的列数。我不知道如何在没有嵌套几个for循环的情况下做到这一点,但必须有一些方法可以使用apply或sapply迭代第2列:length(df)
编辑:我想查看值(将是数字)是否相等
答案 0 :(得分:3)
假设第一列被排除在比较之外并且所有其他列都没有,您可以尝试:
which(rowSums(df[,2]==df[,3:ncol(df)])==(ncol(df)-2))
答案 1 :(得分:0)
您可以将apply
与自定义函数length(unique(x))
一起使用来计算行2:ncol(yourDataFrame)
中唯一的值数。然后,您可以将整个事件放入ifelse
函数中以返回真/假列表。
ifelse(apply(df[ , 2:ncol(yourDataFrame)], MARGIN=1, function(x) length(unique(x))) == 1, TRUE, FALSE)