首页 > 解决方案 > 在R中用逗号组合两个字符串

问题描述

我无法找到答案,但我猜这是因为我没有正确地表达我的问题。

我想将两个包含多个逗号分隔值的字符串组合成一个字符串,交替输入来自每个原始字符串的输入。

x <- '1,2'
y <- 'R,L'

# fictitious function
z <- combineSomehow(x,y) 

z = '1R, 2L'

编辑:添加数据框以更好地描述我的问题。我希望能够完成上述任务,但在mutate理想情况下。

df <- data.frame(
  x = c('1','2','1,1','2','1'),
  y = c('R','L','R,L','L','R'),
  desired_result = c('1R','2L','1R,1L','2L','1R')
)

东风:

    x   y desired_result
1   1   R             1R
2   2   L             2L
3 1,1 R,L          1R,1L
4   2   L             2L
5   1   R             1R

最终编辑/答案: 基于下面@akrun 的评论/回复,并在最初删除错误后df,这最终成为tidyverse答案:

mutate(desired_result = map2(.x=strsplit(x,','),.y=strsplit(y,','),
                                   ~ str_c(.x,.y, collapse=',')))

标签: r

解决方案


它可以用strsplit和来完成paste

combineSomehow <- function(x, y) {
       do.call(paste0, c(strsplit(c(x,y),","), collapse=", "))
   }

combineSomehow(x,y) 
#[1] "1R, 2L"

在不修改函数的情况下,我们可以Vectorize将其应用于多个元素

df$desired_result2 <-  Vectorize(combineSomehow)(df$x, df$y)

推荐阅读