r data.table - tstrsplit 函数 - 当列以匹配字符串开头时第一列为空
r data.table - tstrsplit function - first column is blank when column starts with matching string
我正在尝试按如下方式拆分字符串
x <- data.table(VAROLD=c('DBA','ADB'))
x[, paste0('VARNEW_', 1:2) := tstrsplit(VAROLD, 'D', fixed=T)][]
我得到如下输出想看看我是否可以避免生成第一列空白。我只查看使用 data.table 包的选项。
VAROLD
VARNEW_1
VARNEW_2
1: DBA
BA
2: ADB
A
B
然后,当 'D' 作为第一个字符
出现时,我们可能需要进行一些子字符串移位
x[, paste0('VARNEW_', 1:2) := tstrsplit(sub("^(D)(.*)", "\2\1",
VAROLD), "D", fixed = TRUE)][]
-输出
VAROLD VARNEW_1 VARNEW_2
1: DBA BA <NA>
2: ADB A B
或者如果它只是初始的 'D',那么在进行拆分之前将其删除
x[, paste0('VARNEW_', 1:2) := tstrsplit(sub("^D+", "",
VAROLD), "D", fixed = TRUE)][]
VAROLD VARNEW_1 VARNEW_2
1: DBA BA <NA>
2: ADB A B
我正在尝试按如下方式拆分字符串
x <- data.table(VAROLD=c('DBA','ADB'))
x[, paste0('VARNEW_', 1:2) := tstrsplit(VAROLD, 'D', fixed=T)][]
我得到如下输出想看看我是否可以避免生成第一列空白。我只查看使用 data.table 包的选项。
VAROLD | VARNEW_1 | VARNEW_2 |
---|---|---|
1: DBA | BA | |
2: ADB | A | B |
然后,当 'D' 作为第一个字符
出现时,我们可能需要进行一些子字符串移位x[, paste0('VARNEW_', 1:2) := tstrsplit(sub("^(D)(.*)", "\2\1",
VAROLD), "D", fixed = TRUE)][]
-输出
VAROLD VARNEW_1 VARNEW_2
1: DBA BA <NA>
2: ADB A B
或者如果它只是初始的 'D',那么在进行拆分之前将其删除
x[, paste0('VARNEW_', 1:2) := tstrsplit(sub("^D+", "",
VAROLD), "D", fixed = TRUE)][]
VAROLD VARNEW_1 VARNEW_2
1: DBA BA <NA>
2: ADB A B