r - 从R中的字符串获取非零值

标签 r string

我有两个字符串:

x1 = "03011000"
x2 = "13001000"

字符串的非零字符完全重叠。我想获得每个字符位置的max元素。
因此,在这种情况下,结果将是:
result = "13011000"

第一个字符为1,因为x2在第一个位置具有1。第四个字符也是1,因为x1在此位置具有1。
我的解决方法如下:
paste0(mapply(pmax, strsplit(x1, ""), strsplit(x2, "")), collapse = "")

但这似乎是多余的,因为我必须将每个字符分解成各个部分并进行比较。有更好的方法吗?

最佳答案

使用原始比较:

rawToChar(as.raw(pmax(as.numeric(charToRaw(x1)), as.numeric(charToRaw(x2)))))
# [1] "13011000"

我们可以将其包装为一个函数:
foo <- function(x, y){
  mapply(FUN = function(x, y) {
    rawToChar(as.raw(pmax(as.numeric(charToRaw(x)), as.numeric(charToRaw(y)))))
  }, x = x, y = y, USE.NAMES = FALSE)
}

x1 <- "03011000"
x2 <- "13001000"
foo(x1, x2)
# [1] "13011000"

x1 <- c("03011000", "ab", "123")
x2 <- c("13001000", "cd", "212")
foo(x1, x2)
# [1] "13011000" "cd"       "223"     

关于r - 从R中的字符串获取非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594606/

相关文章:

c - 从文件中读取内容

r - 如何更改 Jupyter 中 R 图的大小?

r - 在大型 data.table 中按 .N 对多列进行子集化

javascript - 如何在R Shiny数据表中设置列宽?

岭回归模型 : glmnet

c - 给定间隔的随机字符串

r - R中的屏幕坐标

c - 通过函数传递字符串(C 编程)

Java 字典搜索器

c - 尝试过滤掉 C 正则表达式中的无效 URL 字符