我遇到了一个奇怪的演员情况,如果有人能向我解释发生了什么,我会很感激。
我有一个变量(数据框中的一个单元格):
> missing_features[i,][j]
aircraft_company_country
18 United Kingdom
变量的类是:
> sapply(missing_features[i,][j], class)
aircraft_company_country
"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"
发生了什么事?
答案 0 :(得分:0)
您正在将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"