edd*_*ddi 6 string r data.table
我有以下数据:
library(data.table)
d = data.table(a = c(1:3), b = c(2:4))
Run Code Online (Sandbox Code Playgroud)
并希望获得此结果(以适用于任意数量的列的方式):
d[, c := paste0('a_', a, '_b_', b)]
d
# a b c
#1: 1 2 a_1_b_2
#2: 2 3 a_2_b_3
#3: 3 4 a_3_b_4
Run Code Online (Sandbox Code Playgroud)
以下作品,但我希望能找到更短更清晰的东西.
d = data.table(a = c(1:3), b = c(2:4))
d[, c := apply(mapply(paste, names(.SD), .SD, MoreArgs = list(sep = "_")),
1, paste, collapse = "_")]
Run Code Online (Sandbox Code Playgroud)
一种方法,只是稍微干净一点:
d[, c := apply(d, 1, function(x) paste(names(d), x, sep="_", collapse="_")) ]
a b c
1: 1 2 a_1_b_2
2: 2 3 a_2_b_3
3: 3 4 a_3_b_4
Run Code Online (Sandbox Code Playgroud)