我要解决的基本问题已针对单个字符向量和数据帧内的字符向量完成。我正在尝试为数据表执行此操作,因为我有很多列,这些列是包含多个元素的单个字符串,因此我想在内存中执行此操作而不创建副本。在下面的代码中,我尝试遵循在此link上采用的方法。
Node is either not visible or not an HTMLElement
我最终得到的是两行中排序的第一行。请帮忙,并解释一下我在做什么错。
答案 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"