有效地将data.table列从数字转换为字符

时间:2017-11-03 21:24:22

标签: r for-loop data.table

我正在查看一些遗留的R代码,它将文本文件加载到R data.table中,然后将列类型从numeric类型转换为character。

以下是作者如何做到这一点:

library(data.table)
dtable = read.table("path/filename.txt",header=TRUE,sep="\t",check.names=FALSE)

for(i in c(1,2,3,8:18))
{
dtable[,i] <- as.character(as.vector(dtable[,i]))
}

对于data.table包,这看起来非常低效,因为我们使用的是for循环。

在没有for循环的情况下,以这种方式将数据类型转换为多列的最有效“data.table”方法是什么?

1 个答案:

答案 0 :(得分:1)

您不需要循环。这是一个例子

data <- mtcars
str(data)
library(data.table)
id.col <- c(1,2,3,8:11)
setDT(data)[, (id.col) := lapply(.SD, as.character), .SDcols = id.col]
str(data)