R strsplit 忽略一些文本

问题描述 投票:0回答:1

我正在开展一项调查,答案中的许多书面类别均以逗号分隔。我已经成功地使用 gsub 来分离它们,就像这样。

 sss6 <- str_trim(unlist(strsplit(aiprm$step_do_you_anticipate, split=",")))

我已经成功地分离了这样的字符串,所以我可以正确地计算它们,以便进行可视化。

语法,以上都不是,语法,主题专业知识,语法,主题专业知识,偏见,语法,主题专业知识,偏见,事实检查

现在的问题是我的文本里面有括号和逗号,我希望括号“()”内的逗号被忽略。以下是一些例子。

广告文案、JavaScript代码、标题、引人注目的文案、商业创意、广告文案、标题和元描述、创意生成(主题、标题)、代码、创意生成(主题、头条新闻)、广告文案、创意生成(主题、头条新闻)

有什么方法可以告诉 strsplit() 函数不要分隔或忽略括号内的逗号吗?主要问题是(话题、头条新闻)

谢谢!

r strsplit ignore
1个回答
0
投票

可怕(而且非常慢)的解决方案:

chrs        <- strsplit(s, "")[[1]]
commas      <- as.integer(chrs == ",")
parenthesis <- cumsum(chrs == "(" | chrs == ")")
ind         <- which((commas == 1) & (parenthesis %% 2 == 0))

sapply(seq_along(ind), function(i) {
  start <- ifelse(i == 1, 1, ind[i - 1] + 2)
  end   <- ind[i] - 1
  paste(chrs[start:end], collapse = "")
})

最好的方法可能是使用正则表达式。请参阅此线程

© www.soinside.com 2019 - 2024. All rights reserved.