我正在尝试使用 dplyr 将字符串拆分为逗号分隔的字符串,但我运气不佳。

dat<-data.frame(key=1:4,labels=c('a','ab','abc','b'))

我试图让标签列成为 c('a','a,b','a,b,c','b')

我已经尝试了以下所有变体,但似乎没有任何效果。
dat %>%
  mutate(labels=str_split(labels,''))

dat %>%
  mutate(labels=str_split(labels,'')[[1]])

dat %>%
  mutate(labels=paste(str_split(labels,''),collapse=','))

最佳答案

dplyrmutate 与您的问题无关。您的问题更多是尝试将列表(由 str_split 返回)视为向量。

我会写一个小函数来做到这一点:

comma_sep = function(x) {
    x = strsplit(as.character(x), "")
    unlist(lapply(x, paste, collapse = ','))
}

然后你可以
mutate(dat, labels = comma_sep(labels))
#   key labels
# 1   1      a
# 2   2    a,b
# 3   3  a,b,c
# 4   4      b

但是当然,您也可以将函数的内容塞进那一行。

关于r - dplyr 将字符串拆分为逗号分隔的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37579056/

10-12 14:59