我很难在 /
之间提取元素和一个 black space
.当我有两个字符时,我可以这样做 <
和 >
例如,但空间正在抛出我。我想要在基本 R 中执行此操作的最有效方法,因为这将应用于数千个向量。
我想转这个:
x <- "This/DT is/VBZ a/DT short/JJ sentence/NN consisting/VBG of/IN some/DT nouns,/JJ verbs,/NNS and/CC adjectives./VBG"
此:
[1] "DT" "VBZ" "DT" "JJ" "NN" "VBG" "IN" "DT" "JJ" "NNS" "CC" "VBG"
编辑:
谢谢大家的回答。我追求速度,所以 Andres 代码胜出。 Dwin 的代码以最少的代码量获胜。你的德克是第二快的。 stringr 解决方案是最慢的(我认为它会是)并且不在基础中,但很容易理解(我认为这确实是 stringr 包的意图,因为这似乎是 Hadley 对大多数事情的哲学。
感谢您的帮助。再次感谢。
我想我会包括基准测试,因为这将是
lapplied
超过数千个向量: test replications elapsed relative user.self sys.self
1 ANDRES 10000 1.06 1.000000 1.05 0
3 DIRK 10000 1.29 1.216981 1.20 0
2 DWIN 10000 1.56 1.471698 1.43 0
4 FLODEL 10000 8.46 7.981132 7.70 0
最佳答案
类似但更简洁:
#1- Separate the elements by the blank space
y=unlist(strsplit(x,' '))
#2- extract just what you want from each element:
sub('^.*/([^ ]+).*$','\\1',y)
开始和结束 anchor 字符的位置
是
^
和 $
分别,.*
匹配任何字符。[^ ]+
接受非空白字符。\\1
是第一个标记字符
关于r - 提取字符和空格之间的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959145/