1

如何使用 R 向量化来删除这个 for 循环?

library(stringr)
url <- c("http://www.slate.fr/france/87869/mehdi-nemmouche-bruxelles", "http://www.slate.fr/story/87347/turquie-opposition-geek", "http://www.slate.fr/grand-format/paysages-debarquement-photos-1944-aujourdhui")

for (i in 1:length(url)) {
a[i]<-str_match(url[i], "http://.*slate.fr/(.*?)/")[2]
}

这不起作用:

a<-str_match(url, "http://.*slate.fr/(.*?)/")[2]
4

1 回答 1

2

您必须使用[,2],而不是[2]因为输出是 2 列matrix,并且通过索引[2],您只能获得第二个元素,即"http://www.slate.fr/story/"而不是2ndcolumn`。

str_match(url, "http://.*slate.fr/(.*?)/")[,2]
#[1] "france"       "story"        "grand-format"

从描述中?str_match

在“字符串”上向量化。'pattern' 应该是一个单一的模式,即长度为 1 的字符向量。

于 2014-11-18T09:38:41.173 回答