2015-08-12 3 views
2
> df = data.frame(A = c(1, 2, 3), B = c(3, 2, 2), C = c(3, 2, 1)); df 
    A B C 
1 1 3 3 
2 2 2 2 
3 3 2 1 
> df2 = data.frame(A = c(1, 2, 3), B = c(1, 2, 3), C = c(1, 2, 3)); df2 
    A B C 
1 1 1 1 
2 2 2 2 
3 3 3 3 

Я хочу знать, совпадают ли все столбцы в моем data.frame. Для df он должен быть FALSE, тогда как для df2 он должен быть ИСТИННЫМ.R: как проверить, одинаковы ли все столбцы в data.frame

ответ

2

Вы можете проверить, если количество уникальных переменных векторов равна единице:

length(unique(as.list(df))) == 1 
# [1] FALSE 
length(unique(as.list(df2))) == 1 
# [1] TRUE 

Другой способ мог бы проверить, если каждая переменная идентична первой переменной:

all(sapply(df, identical, df[,1])) 
# [1] FALSE 
all(sapply(df2, identical, df2[,1])) 
# [1] TRUE 
0

You также можете проверить его с помощью «all.equal».

sapply(2:ncol(df),function(x) isTRUE(all.equal(df[,x-1],df[,x]))) 
[1] FALSE FALSE 

sapply(2:ncol(df2),function(x) isTRUE(all.equal(df2[,x-1],df2[,x]))) 
[1] TRUE TRUE 
Смежные вопросы