按符号“*”拆分字符字符串

3
> test = "23*45"

我想要通过符号*来拆分test

我尝试过...

> strsplit(test,'*')

and I got...

[[1]]
[1] "2" "3" "*" "4" "5"

What I aim to have is:

[[1]]
[1] "23" "45"

@silvaran:请停止向问题添加“string”和“character”标签。它们过于笼统,没有实际用处,而且你浪费了审阅者的时间(他们不应该批准这些标签)。 - Alan Moore
2个回答

6

您需要转义星号...

test = "23*45"

strsplit( test , "\\*" )
#[[1]]
#[1] "23" "45"

split是一个正则表达式,*表示前面的项匹配零次或多次。你正在拆分空字符,即按照单个字符进行拆分,如strsplit()详细信息部分所述。 \\*表示将*视为字面上的*

或者使用fixed参数...

strsplit( test , "*" , fixed = TRUE )
#[[1]]
#[1] "23" "45"

这将使R将分割模式视为字面值而不是正则表达式。


1
非常感谢!也感谢您的解释! - Remi.b

3

7
不确定为什么这个被踩了。这似乎是一个相当有趣的资源(虽然对于这个问题来说似乎有点过头了)。 - A5C1D2H2I1M1N2O1R2T1
是的,它是。它使用ICU库,并且可以很好地处理每种编码。同时也能正确处理NA值。 - bartektartanus
我没有点踩,但是这个链接在我的电脑上无法打开。也许这促使其他人点了踩。 - Mark Miller
@MarkMiller,即使在您的浏览器中也是如此吗?您总可以下载文件并手动在 R 中运行。 - bartektartanus
如果我复制链接并将其粘贴到我的网络浏览器中,我会收到消息“糟糕!Google Chrome找不到www.rexamine.com”。我还没有尝试在R中运行源命令。我只是建议,如果其他人无法使链接工作,他们可能因此投了反对票。 - Mark Miller
我不知道为什么你无法下载这个文件。如果你想的话,我可以通过电子邮件发送给你,或者你可以尝试谷歌搜索“rexamine”。 - bartektartanus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接