繁体   English   中英

如何在R中处理data.table列as.character?

[英]how to deal with data.table column as.character in R?

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

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

它返回:

[1] "c(\"uc003hzj.4\", \"uc021ofx.1\", \"uc021olu.1\", \"uc021ome.1\", \"uc021oov.1\", \"uc021opl.1\", \"uc021osl.1\", \"uc021ovd.1\", \"uc021ovp.1\", \"uc021pdq.1\", \"uc021pdv.1\", \"uc021pdw.1\")

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

as.charactervector s起作用,而不对OP期望的方式作用于data.frame/data.table对象。 因此,如果需要将第一列作为character类,请使用.SD[[1L]]子集并应用as.character

DT[, as.character(.SD[[1L]])]

如果有多个列,我们可以使用.SDcols指定列索引,并在.SD上循环以转换为character然后将( := )输出分配回特定的列。

DT[, (1:2) := lapply(.SD, as.character), .SDcols= 1:2]

数据

DT <- data.table(Col1 = 1:5, Col2= 6:10, Col3= LETTERS[1:5])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM