r - 在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=',')))
解决方案
它可以用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)
推荐阅读
- swift - AFHTTPRequestOperation 的合适替代品是什么?
- jwt - springdoc:如何为请求设置默认的 JWT 令牌(演示 API)?
- powershell - PowerShell 远程处理未安装 MSI
- javascript - 如何使用material-ui动态添加/删除类名?
- swift - 是否有类似于 Java 中的 Reentrant Lock for Swift 的库?
- python - 这个生成器 for 循环的扩展形式是什么?
- android - ArcGIS Android SDK,使用vectorDrawable向mapView添加标记
- javascript - 数组:Js中的对象语法含义
- internationalization - Lazarus:i18n 不翻译应用程序
- flutter - 如何在颤动中休息API中的数据更改时推送通知?