给定列列表,将列转换为数字

时间:2018-11-04 02:43:38

标签: r

我有一个列列表,我们称它们为:ASSET,LIAB。

我想把它们都变成专栏。我正在使用R数据表,它向我发出警告,告诉我,当我以类似于在Python Pandas中使用的样式进行操作时,它已转换回字符(即完全无用): / p>

for (v in numeric_vars) {
    ris_df[, eval(v)] <- as.numeric(gsub(',', '', ris_df[, eval(v)]))
}

列表numeric_vars是变量的列表,目前是类似字符串的对象(例如1,000),我希望将其转换为整数。

1 个答案:

答案 0 :(得分:0)

首先,我认为您应该使用with=FALSE来启用类似data.frame的语法以在data.table对象上工作。

ris_df[, eval(v), with = FALSE] <- as.numeric(gsub(',', '', ris_df[, eval(v), with = FALSE]))

第二,检查gsub(',', '', dt[, eval(v), with=F])的输出是什么

library(data.table)
test <- rep("1,000",10) 
dt <- data.table(test)
v <- "test"
dt[, v, with=FALSE] <- as.numeric(gsub(',', '', dt[, eval(v), with=F]))
> gsub(',', '', dt[, eval(v), with=F])
[1] "c(\"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\")"

如您所见,它仅返回一个大字符串!这可能是一种data.table的行为,因为它对data.frame个对象很有效

df <-data.frame(dt, stringsAsFactors = F)
> as.numeric(gsub(',', '',df[, eval(v)]))
 [1] 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000