R将字符串拆分为元素,进行排序和重组

时间:2019-05-30 22:40:50

标签: r data.table

我要解决的基本问题已针对单个字符向量和数据帧内的字符向量完成。我正在尝试为数据表执行此操作,因为我有很多列,这些列是包含多个元素的单个字符串,因此我想在内存中执行此操作而不创建副本。在下面的代码中,我尝试遵循在此link上采用的方法。

Node is either not visible or not an HTMLElement

我最终得到的是两行中排序的第一行。请帮忙,并解释一下我在做什么错。

1 个答案:

答案 0 :(得分:2)

我们需要第二个* apply来遍历x的元素。

test[, (cols) := (lapply(.SD, function(x) {
   #browser()
   sapply(x, function(y) paste(sort(trimws(strsplit(y, ',')[[1]])), collapse=','))
})), .SDcols = cols]

> test
              col1                col2
1:   cow,horse,pig aardvark,fish,moose
2: frog,orange,pig  aardvark,elk,whale

strsplit(x, ',')[[1]]使用了每一列的第一个元素,如下所示。

Browse[1]> strsplit(x, ',')
[[1]]
[1] "cow"    " pig"   " horse"

[[2]]
[1] "orange" " pig"   " frog"

Browse[1]> strsplit(x, ',')[[1]]
[1] "cow"    " pig"   " horse"