gpt4 book ai didi

r - 如何将字符串中的括号提取到新列中

转载 作者:行者123 更新时间:2023-12-04 10:31:53 28 4
gpt4 key购买 nike

我需要将信息从字符串导出到不同的列。
更具体地说,字符串中括号的内容;

假设我有一个字符串

a <- "2xExp [K89; K96]; 1xExp [N-Term]; 2xNum [S87(100); S93(100)]"

我试图输出的是一个包含括号内容的向量,如果有逗号,则将它们保存为单独的括号字符串,并删除括号。

例如
tmp <- function(a)

结果
tmp
"[K89]" , "[K96]", "[N-Term]", "[S87]", "[S93]"

到目前为止我的方法:
  pattern <- "(\\[.*?\\])"
hits <- gregexpr(pattern, a)
matches <- regmatches(a, hits)
unlisted_matches <- unlist(matches)

结果
"[K89; K96]" "[N-Term]" "[S87(100); S93(100)]" 

这确实给了我括号,但仍然没有拆分条款。出于任何原因,我无法有效地分离“;”条款。

最佳答案

这是使用 tidyverse 的一种方法:

a <- "2xExp [K89; K96]; 1xExp [N-Term]; 2xNum [S87(100); S93(100)]"

library(tidyverse)
a %>%
# extract between square, brackets, not keeping brackets, and unlist
str_extract_all("(?<=\\[).*?(?=\\])") %>%
unlist() %>%
# remove round brackets and content
str_replace_all("\\(.*?\\)", "") %>%
# split by ";" and unlist
str_split("; ") %>%
unlist() %>%
# put the brackets back
str_c("[",.,"]")
#> [1] "[K89]" "[K96]" "[N-Term]" "[S87]" "[S93]"

关于r - 如何将字符串中的括号提取到新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60386195/

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