【发布时间】:2016-07-27 21:14:07
【问题描述】:
我有一个股票代码的字符向量,其中代码名称以下列形式连接到该代码所在的国家/地区:country_name/ticker_name。我正在尝试拆分每个字符串并从“/”后面删除所有内容,返回仅包含股票名称的字符向量。这是一个示例向量:
sample_string <- c('US/SPY', 'US/AOL', 'US/MTC', 'US/PHA', 'US/PZI',
'US/AOL', 'US/BRCM')
我最初的想法是使用 stringr 库。我对那个包没有任何经验,但这是我正在尝试的:
library(stringr)
split_string <- str_split(sample_string, '/')
但我不确定如何仅将每个列表的第二个元素作为单个向量返回。
如何在大型字符向量(约 1.05 亿个条目)上执行此操作?
【问题讨论】:
-
有很多方法可以实现这一点。例如
sub(".*/(.*)", "\\1", sample_string)或sub(".*/", "", sample_string)等。或者这可能会更快,因为避免使用正则表达式data.table::tstrsplit(sample_string, "/", fixed = TRUE)[[2]] -
'.*/(.*)' 在这里充当指针吗?
-
它的意思是“匹配反斜杠之前的所有内容(包括)并捕获它之后的所有内容”。然后
\\1告诉sub返回捕获的组。虽然我认为在这种情况下它过于复杂。其他两个选项可能更好/更简单。不管怎样,这种类型的问题在 SO 上被问了很多次,如果你想在 R 中看到更多的正则表达式示例,你真的应该尝试谷歌。我推荐这个网站用于未来的正则表达式测试regex101.com 和这个用于教程@ 987654322@ -
明白。感谢您抽出宝贵时间。