[英]R converts factor into number when using sprintf
我遇到了一個奇怪的轉型情況,如果有人可以向我解釋發生了什么,我將不勝感激。
我有一個變量(數據框中的一個單元格為):
> missing_features[i,][j]
aircraft_company_country
18 United Kingdom
變量的類為:
> sapply(missing_features[i,][j], class)
aircraft_company_country
"factor"
在腳本的某個位置,字符列已轉換為factor。 當我嘗試使用print和sprintf進行打印時,它顯示:
> print( missing_features[i,][j])
aircraft_company_country
18 United Kingdom
> sprintf("%s", missing_features[i,][j])
[1] "56"
一種使sprintf打印正確值的方法是:
> sprintf("%s", lapply( missing_features[i,][j], as.character))
[1] "United Kingdom"
到底是怎么回事?
您正在將data.frame
傳遞給sprintf
函數,該函數實際上不受支持。 您應該使用[[
而不是[
提取單個列以使用sprintf
進行格式化,如以下示例所示。
> missing_features <- data.frame(aircraft_company_country = c("United States", "United Kingdom"), foo = 1:2)
> i <- 2
> j <- 1
> str(missing_features[i,][j])
'data.frame': 1 obs. of 1 variable:
$ aircraft_company_country: Factor w/ 2 levels "United Kingdom",..: 1
> str(missing_features[i,][[j]])
Factor w/ 2 levels "United Kingdom",..: 1
> sprintf("%s", missing_features[i,][j])
[1] "1"
> sprintf("%s", missing_features[i,][[j]])
[1] "United Kingdom"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.