我有我的data.table DT,我想过滤并仅保留该行中任何值包含字符串“ tokeep”的行。
library(data.table)
cola <- c(1:5)
colb <- c(letters[1:4], "tokeep")
dt <- data.table(cola, colb)
dt
cola colb
1: 1 a
2: 2 b
3: 3 c
4: 4 d
5: 5 tokeep
预期结果:
dt[grepl("tokeep", colb)]
cola colb
1: 5 tokeep
但是我不知道将在哪个列中找到。我尝试像这样在.SD
中使用i
dt[any(grepl("tokeep", .SD))]
Empty data.table (0 rows) of 2 cols: cola,colb
此外,无法弄清楚以下内容。
> dt[,print(any(grepl("tokeep", .SD)))]
[1] TRUE
[1] TRUE
是不是FALSE, TRUE
,因为"tokeep"
仅存在于colb
中?
答案 0 :(得分:0)
在阅读this post之后,我认为这可能是一种简洁明了的数据,是将函数应用于data.table的所有行的理想方法。对其他命题感兴趣。
> dt[dt[, any(grepl("tokeep", .SD)), by = seq_len(nrow(dt))]$V1]
cola colb
1: 5 tokeep