我是R的新手,我有以下快速问题:删除data.table中每个"单元格"的第一个和最后一个字符的最佳方法是什么.我从.txt文件中导入了数据,其中文本有三个字符的分隔符 - "^ | ^"?
DT <- fread("file.txt", header = T, sep= "|")
Row Conc group
^1^ ^2.5^ ^A^
^2^ ^3.0^ ^A^
^3^ ^4.6^ ^B^
^4^ ^5.0^ ^B^
^5^ ^3.2^ ^C^
^6^ ^4.2^ ^C^
^7^ ^5.3^ ^D^
^8^ ^3.4^ ^D^
Run Code Online (Sandbox Code Playgroud)
我可以使用stringi包删除"^"列的列:
DT[, Row := stri_sub(Row,2,-2)]
Run Code Online (Sandbox Code Playgroud)
它将它转换为char,但这应该没问题.但是,由于我使用的data.table有46列,我正在寻找更节省时间的方法.
或者继续你的方法:
library(data.table)
library(stringi)
cols <- names(df)
setDT(df)[, (cols) := lapply(.SD, function(x) stri_sub(x, 2, -2))]
Run Code Online (Sandbox Code Playgroud)
如果要将包含数字的列转换为适当的类型,可以在注释中使用@Frank提供的代码:
setDT(df)[, (cols) := lapply(.SD, function(x) type.convert(stri_sub(x, 2, -2)))]
Run Code Online (Sandbox Code Playgroud)