我正在尝试使用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\")
如何在输出中避免这些“\”的想法?
答案 0 :(得分:2)
as.character
以vector
为主,而不是data.frame/data.table
个对象,与OP预期的方式相同。因此,如果我们需要将第一列作为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])