簡體   English   中英

使用sprintf時R將因子轉換為數字

[英]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.

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