r - 将列转换为数字,给定列列表
问题描述
我有一个列列表,我们称它们为:ASSET、LIAB。
我想把它们都变成列。我正在使用 R 数据表,当我以类似于我在 Python Pandas 中使用的风格进行操作时,它会向我发出警告,告诉我它已转换回字符(即完全无用):
for (v in numeric_vars) {
ris_df[, eval(v)] <- as.numeric(gsub(',', '', ris_df[, eval(v)]))
}
该列表numeric_vars
是变量的列表,目前是类似字符串的对象(例如1,000
),我想将其转换为整数。
解决方案
首先,我认为您应该使用 with=FALSE
to enable data.frame
-like 语法来处理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
推荐阅读
- linux - 使用 Perl 获取命令输入
- vba - 发生错误事件时,停止 Outlook VBA 在 ItemSend() 中发送邮件
- php - 如何将文本添加到图像动态内容
- c - 将一定数量的字节添加到 C 中的 void 指针
- c++ - c++错误:传递'const std::vector
' 作为 'this' 参数丢弃限定符 [-fpermissive] - makefile - 在 Android.mk 文件中添加要调用的函数
- python - 在 pandas 中使用 groupby 过滤 Max 3 个计数
- udp - IPv4 到 IPv6 UDP 打孔
- android - 房间没有在一张表中保留数据
- excel - 格式化选择循环中的单元格