gpt4 book ai didi

r - 将字符串拆分为 R 中的列

转载 作者:行者123 更新时间:2023-12-04 02:37:46 25 4
gpt4 key购买 nike

我有一个字符串

mat <- c("[('value-66 > 0.03', 0.1314460), ('0.03 < value-222 <= 0.06', -0.062805), ('0.01 < value-93 <= 0.03', -0.058007), ('value-141 > 0.05', -0.051339234), ('value-108 <= 0.01', -0.0373), ('value-303 > 0.02', 0.037257)]") 

我想将每个括号中的值分成三列。

对于第一个例子,最终矩阵将包含三列:

value-66, > 0.03, 0.1314460

我的困难在于这样的例子:

'0.01 < value-93 <= 0.03', -0.058007

我还没有找到将其分为三列的解决方案,例如:

value-93, 0.01 <  <= 0.03, -0.058007

我已经试过了,但它没有正确切割

s <- strsplit(mat, ",")
s1 <- lapply(s, function(x) trimws(x,which=c('both')))
s1 <- lapply(s1, function(x) strsplit(x,' '))

我必须在循环中设置条件吗?

最佳答案

你不需要循环函数。

试试这个:

library(stringr)

mat <- c("[('value-66 > 0.03', 0.1314460), ('0.03 < value-222 <= 0.06', -0.062805), ('0.01 < value-93 <= 0.03', -0.058007), ('value-141 > 0.05', -0.051339234), ('value-108 <= 0.01', -0.0373), ('value-303 > 0.02', 0.037257)]")

mat %>%
str_extract_all("\\(.+?\\)") %>%
sapply(str_remove_all, "\\(|\\)|\\'") %>%
as.character() %>%
str_split(",") %>%
(
function(i){
c12 <- sapply(i, "[[", 1)
c1 <- str_extract(c12, "value[^ ]+")
c2 <- str_remove(c12, c1)
c3 <- sapply(i, "[[", 2)
cbind(c1, c2, c3)
}
)
     c1          c2                c3             
[1,] "value-66" " > 0.03" " 0.1314460"
[2,] "value-222" "0.03 < <= 0.06" " -0.062805"
[3,] "value-93" "0.01 < <= 0.03" " -0.058007"
[4,] "value-141" " > 0.05" " -0.051339234"
[5,] "value-108" " <= 0.01" " -0.0373"
[6,] "value-303" " > 0.02" " 0.037257"

stringr 是我最喜欢的字符串操作工具,包括 regex。它是一致的,功能更容易记住。但是,如果需要,您可以使用 R 基本函数来执行此操作。

关于r - 将字符串拆分为 R 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60852878/

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