如何将data.table列处理为R中的.character?

如何将data.table列处理为R中的.character?,r,data.table,R,Data.table,我试图使用data.table而不是data.frame(以获得更快的代码)。尽管与之间存在语法差异,但当需要提取特定字符列并将其用作字符向量时,我遇到了问题。当我打电话时: library(data.table) DT <- fread("file.txt") vect <- as.character(DT[, 1, with = FALSE]) class(vect) ###[1] "character" head(vect) 如何在输出中避免这些“\”的想法?字符作用于向量s

我试图使用data.table而不是data.frame(以获得更快的代码)。尽管与之间存在语法差异,但当需要提取特定字符列并将其用作字符向量时,我遇到了问题。当我打电话时:

library(data.table)
DT <- fread("file.txt")
vect <- as.character(DT[, 1, with = FALSE])
class(vect)
###[1] "character"
head(vect)

如何在输出中避免这些“\”的想法?

字符
作用于
向量
s,而不是
数据.frame/data.table
对象,正如OP预期的那样。因此,如果我们需要将第一列作为
character
类,则使用
.SD[[1L]]
子集并将
作为.character

DT[, as.character(.SD[[1L]])]
如果有多个列,我们可以使用
.SDcols
指定列索引,并在
.SD
上循环以转换为
字符
,并将(
:=
)输出分配回特定列

DT[, (1:2) := lapply(.SD, as.character), .SDcols= 1:2]
数据
DT您说它已经是一个字符列,所以
v=DT[,colname]
-就是这样;其他选择是
DT[[“colname”]]
DT[[colidx]]]
我明白了!谢谢你,先生!好的选择!是的!太快了!这解决了我的问题,无需调用col名称,只需调用col编号!非常感谢你!!
DT[, (1:2) := lapply(.SD, as.character), .SDcols= 1:2]
DT <- data.table(Col1 = 1:5, Col2= 6:10, Col3= LETTERS[1:5])