簡體   English   中英

為什么 R 在強制轉換為數據框時將數字和字符轉換為因子?

[英]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
  1. 不要cbind因為它將數據轉換為矩陣,而矩陣只能保存一種類型的數據,因此它將數字轉換為字符。

  2. 使用data.frame因為as.data.frame(a = nums, b = chars)返回錯誤。

  3. 使用stringsAsFactors = FALSE由於data.frame的默認值stringsAsFactorsTRUE ,其將字符轉換為的因素。 數字也更改為因子,因為在 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,則不應再發生這種情況:數據幀不會自動將chrfct 在某種程度上,數據幀現在更類似於小標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM