R - 删除data.table中每个因子的第一个和最后一个字符

Tsv*_*lov 4 r data.table

我是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列,我正在寻找更节省时间的方法.

Sum*_*edh 9

或者继续你的方法:

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)