2013-06-03 5 views
6

R에서 데이터 프레임을 만들 때 문자열은 기본적으로 요인으로 변환됩니다 (상관하지 않음). 그러나 데이터 프레임에 새로운 행을 만들려는 경우 문자열을 요소로 인코딩하는 방법을 찾을 수 없습니다. factor()을 사용하면 문자열이 숫자로 변환되지만 여전히 요인이 아닙니다. 두 시나리오 중 하나에서 새 행은 요소가 아니므로 데이터 프레임에 새 행을 추가 할 수 없습니다. 내가 원한 것은 필자의 새로운 행이 내 데이터 프레임과 같이 동작하도록하는 것입니다. 즉, 문자열이 요소로 변환 된 것입니다.R의 요소 인 문자열

> data.frame(c("Name one", "Name two")) -> my.data 
> colnames(my.data) <- "Names" 
> is.factor(my.data$Names) 
[1] TRUE 
> new.row1 <- c("Name three") 
> is.factor(new.row1)[1] 
[1] FALSE 
> new.row2 <- c(factor("Name three")) 
> new.row2 
[1] 1 
> is.factor(new.row2)[1] 
[1] FALSE 
> rbind(my.data, new.row1) 
    Names 
1 Name one 
2 Name two 
3  <NA> 
Warning message: 
In `[<-.factor`(`*tmp*`, ri, value = "Name three") : 
    invalid factor level, NA generated 
> rbind(my.data, new.row2) 
    Names 
1 Name one 
2 Name two 
3  <NA> 
Warning message: 
In `[<-.factor`(`*tmp*`, ri, value = 1L) : 
    invalid factor level, NA generated 
> 
+2

'c'는 모든 속성을 제거합니다. 따라서 요소를 정수로 변환합니다. – Roland

답변

10

비결은 간단한 vector 함께했던 것처럼, 또 다른 data.frame하지 만 rbinddata.frame이다 :

my.data <- data.frame(Names = c("Name one", "Name two")) 
new.row1 <- data.frame(Names = c("Name three")) 
rbind(my.data, new.row1) 

##  Names 
## 1 Name one 
## 2 Name two 
## 3 Name three 
1

어쩌면이 같은 당신을 도울 것입니다?

data.frame(c("Name one", "Name two")) -> my.data 
colnames(my.data) <- "Names" 

rbind(my.data, data.frame(Names="name three"))