2016-11-08 2 views
-1

У меня есть очень простой вопрос, но я не могу найти ответ: у меня есть этот data.frame:data.frame в R: конкатенация два столбца чисел вместо вхождений

b=c("a","a","a","a","a","b","b","b","b","c") 
c=c("b","b","b","b","b","c","c","c","c","d") 

a<-data.frame(b,c) 

Почему, если я хотел бы поместить в одну колонку вектор a$b и a$c с этим:

f<-c(a$b,a$c) 

результат не похож на

> f<-c(b,c) 
> f 
[1] "a" "a" "a" "a" "a" "b" "b" "b" "b" "c" "b" "b" "b" "b" "b" "c" "c" "c" "c" "d" 

, но

> f<-c(a$b,a$c) 
> f 
[1] 1 1 1 1 1 2 2 2 2 3 1 1 1 1 1 2 2 2 2 3 

? Спасибо заранее!

EDIT: Пробовал это, глядя на возможный дубликат предложить выше:

> a<-data.frame(z=as.character(b),k=as.character(c)) 
> f<-c(a$z,a$k) 
> f [1] 1 1 1 1 1 2 2 2 2 3 1 1 1 1 1 2 2 2 2 3 
+0

Возможный дубликат [Преобразование data.frame столбцов из факторов символов] (http://stackoverflow.com/questions/2851015/convert-data-frame-columns-from-factors-to-characters) –

+0

Привет, если я не ошибаюсь, это не работает, но решение под да! – user6498650

+0

В принципе, это очень распространенная проблема, когда мы рассматриваем фактор как символы и пытаемся выполнять разные операции над ними. Он также работает, если вы выполняете 'f <- c (as.character (a $ z), as.character (a $ k))' –

ответ

2

Вы должны установить stringsAsFactors к FALSE в функции data.frame(). В противном случае строки интерпретируются как факторы, приводящие к нежелательному результату.

b <- c("a","a","a","a","a","b","b","b","b","c") 
c <- c("b","b","b","b","b","c","c","c","c","d") 

a <- data.frame(b,c, stringsAsFactors = F) 

f <- c(a$b,a$c) 

f 
[1] "a" "a" "a" "a" "a" "b" "b" "b" "b" "c" "b" "b" "b" "b" "b" "c" "c" "c" "c" "d" 
Смежные вопросы