在R中,我有一个变量作者,其值为“(Bernoulli)Cuatrec。”
我想只有名字,所以我使用以下正则表达式:
L <- strsplit(Author,"[()]")
但是这给了我3个字符串作为结果:
"" "Bernoulli" "Cuatrec."
我怎样才能只有两个名字,而不是空字符串?
PS:我的实际正则表达式更复杂,这里简化了。
答案 0 :(得分:2)
在以下解决方案中,将rmChars
和splitChars
(针对第一个解决方案)和chars
(针对第二个解决方案)设置为表示您需要使用的实际字符集的模式。根据您的单词和非单词,您可以使用内置类,例如chars <- "\\W"
,将chars
设置为所有非单词字符。
1)删除(首先然后拆分)。假设s
是输入字符串:
rmChars <- "[(]"
splitChars <- "[)]"
strsplit(gsub(rmChars, "", s), splitChars)[[1]]
,并提供:
[1] "Bernoulli" "Cuatrec."
2)另一种可能性是用空格替换chars
中的每个字符,修剪末尾然后分割空格。
chars <- "[()]"
strsplit(trimws(gsub(chars, " ", s)), " ")[[1]]
,并提供:
[1] "Bernoulli" "Cuatrec."
答案 1 :(得分:0)
我通常倾向于尽可能避免安装新库。因此,我可以做到:
->rowCount();
我认为无需图书馆就可以找到解决方案。
答案 2 :(得分:0)
如果您的数据始终采用相同的模式,则可以使用:
strsplit(Author,"[[:punct:]]")[[1]][-1]
[1] "Bernoulli" "Cuatrec"
当然,如果模式不规则,我的解决方案就没用了。