2014-10-25 5 views
4

У меня есть два кадра данных, как это:Как проверить, имеют ли два фрейма данных одинаковые имена столбцов?

quest1 <- c(5,5,5) 
quest2 <- c(5,5,5) 
quest3<- c("a","b","c") 
quest4 <- c(7,7,7) 
quest5 <- c(8,8,8) 


myquest1 <- data.frame(quest1,quest2,quest3) 

myquest2 <- data.frame(quest4,quest5) 

Как я могу проверить, если они имеют одинаковые имена столбцов с IfElse или если заявление петлевой с предупреждением или остановить функцию? Или есть другой ..? Я бы предпочел первый.

+2

Я думаю, что вы хотите 'имена (myquest1)% в% имен (myquest2)', и получается, что ваш пример не показывают ни быть тем же самым –

+0

@RichardScriven See мое редактирование. Я проработал часть. –

+1

@ Trik23 Вы хотите проверить, одинаковы ли все столбцы в обоих наборах данных? Предположим, что 'names (myquest2) <- c (" quest1 "," quest2 "); имена (myquest2)% in% names (myquest1) # [1] TRUE TRUE' – akrun

ответ

2

Я думаю, что вам нужно что-то вроде следующего с помощью функции.

Используя ваш пример:

quest1 <- c(5,5,5) 
quest2 <- c(5,5,5) 
quest3<- c("a","b","c") 
quest4 <- c(7,7,7) 
quest5 <- c(8,8,8) 

myquest1 <- data.frame(quest1,quest2,quest3) 
myquest2 <- data.frame(quest4,quest5) 
myquest3 <- data.frame(quest1,quest2,quest3) 


my_func <- function(x,y) { 
    for (i in names(x)) { 
     if (!(i %in% names(y))) { 
      print('Warning: Names are not the same') 
      break 
     } 
     else if(i==tail(names(y),n=1)) { 
      print('Names are identical') 
     } 
    } 
} 


> my_func(myquest1,myquest2) 
[1] "Warning: Names are not the same" 
> my_func(myquest1,myquest3) 
[1] "Names are identical" 
+0

Пользователи в комментариях помогли мне. Но я принимаю твоего собеседника, потому что они еще не дали его здесь. Вы подходите к новичкам. Благодаря! –

+0

Спасибо. Всегда рад помочь! – LyzandeR

+0

И если вы запрограммируете my_func, чтобы сохранить счетчик, распечатайте каждое имя неудавшегося Col и перерыв после его завершения, если не тот же счетчик больше одного, тогда вы получите хороший список имен, чтобы преследовать и исправить! Отличная функция! – sconfluentus

Смежные вопросы