[英]Why does R change the variable type when prepending NA values to a data frame with factors?
[英]Why does R convert numbers and characters to factors when coercing to data frame?
最近我遇到了一個問題,我的數據被轉換為因子。 這是一個很大的麻煩,因為它(總是)不容易被發現。
我知道我可以使用as.character(paste(x))
或as.character(paste(x))
等解決方案將它們轉換回來,但這似乎真的沒有必要。
示例代碼:
nums <- c(1,2,3,4,5)
chars <- c("A","B","C,","D","E")
str(nums)
#> num [1:5] 1 2 3 4 5
str(chars)
#> chr [1:5] "A" "B" "C," "D" "E"
df <- as.data.frame(cbind(a = nums, b = chars))
str(df)
#> 'data.frame': 5 obs. of 2 variables:
#> $ a: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5
#> $ b: Factor w/ 5 levels "A","B","C,","D",..: 1 2 3 4 5
不要cbind
因為它將數據轉換為矩陣,而矩陣只能保存一種類型的數據,因此它將數字轉換為字符。
使用data.frame
因為as.data.frame(a = nums, b = chars)
返回錯誤。
使用stringsAsFactors = FALSE
由於data.frame
的默認值stringsAsFactors
是TRUE
,其將字符轉換為的因素。 數字也更改為因子,因為在 1) 中它們已更改為字符。
df <- data.frame(a = nums, b = chars, stringsAsFactors = FALSE) str(df) #'data.frame': 5 obs. of 2 variables: # $ a: num 1 2 3 4 5 # $ b: chr "A" "B" "C," "D" ...
編輯:從 R 的最新版本開始, stringAsFactors
的默認值已更改為FALSE
。
如果您已更新 R,則不應再發生這種情況:數據幀不會自動將chr
為fct
。 在某種程度上,數據幀現在更類似於小標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.