我有一个包含一个字符串列的数据表。我想使用 strsplit 创建另一个列,它是该列的子集。
dat <- data.table(labels=c('a_1','b_2','c_3','d_4'))
我想要的输出是
label sub_label
a_1 a
b_2 b
c_3 c
d_4 d
我已经尝试过以下方法,但似乎都不起作用。
dat %>%
mutate(
sub_labels=strsplit(as.character(labels), "_")[[1]][1]
)
# gives a column whose values are all "a"
这个对我来说似乎合乎逻辑,
dat %>%
mutate(
sub_labels=sapply(strsplit(as.character(labels), "_"), function(x) x[[1]][1])
)
报错
Error: Don't know how to handle type pairlist
我看到另一篇文章,其中对 strsplit 的输出进行粘贴折叠起作用,所以我不明白为什么匿名函数中的子集设置会出现问题。感谢您对此的任何解释。
最佳答案
tidyr::separate
可以在这里提供帮助:
> dat %>% separate(labels, c("first", "second") )
first second
1: a 1
2: b 2
3: c 3
4: d 4
关于r - 在 dplyr 和 mutate 中使用 strsplit 和 subset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565539/