gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:45:57 25 4
gpt4 key购买 nike

我有两个字符串:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com