Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 找到每个句子中包含的名字,在一个大的名字向量中循环_R - Fatal编程技术网

R 找到每个句子中包含的名字,在一个大的名字向量中循环

R 找到每个句子中包含的名字,在一个大的名字向量中循环,r,R,这个问题是这个问题的延伸: 我会把相关部分写在这里。由此: > sentences [1] "Opposed as a reformer at Tübingen, he accepted a call to the University of Wittenberg by Martin Luther, recommended by his great-uncle Johann Reuchlin" [2] " Melanchthon became professor of the Greek

这个问题是这个问题的延伸:

我会把相关部分写在这里。由此:

> sentences
[1] "Opposed as a reformer at Tübingen, he accepted a call to the University of Wittenberg by Martin Luther, recommended by his great-uncle Johann Reuchlin"
[2] " Melanchthon became professor of the Greek language in Wittenberg at the age of 21 with the help of Martin Luther"                                                                    
[3] " He studied the Scripture, especially of Paul, and Evangelical doctrine"
[4] " He was present at the disputation of Leipzig (1519) as a spectator, but participated by his comments."                                                                          
[5] " Johann Eck having attacked his views, Melanchthon replied based on the authority of Scripture in his Defensio contra Johannem Eckium"

toMatch <- c("Martin Luther", "Paul", "Melanchthon")

你在期待这样的事情吗

library(stringr)

sentences <- c(
"Opposed as a reformer at Tübingen, he accepted a call to the University of Wittenberg by Martin Luther, recommended by his great-uncle Johann Reuchlin",
" Melanchthon became professor of the Greek language in Wittenberg at the age of 21 with the help of Martin Luther",
" He studied the Scripture, especially of Paul, and Evangelical doctrine",
" He was present at the disputation of Leipzig (1519) as a spectator, but participated by his comments.",                                          
" Johann Eck having attacked his views, Melanchthon replied based on the authority of Scripture in his Defensio contra Johannem Eckium")

toMatch <- c("Martin Luther", "Paul", "Melanchthon")

for(i in 1:length(sentences)){
  lst[[i]] <- NA * seq(length(toMatch))
  for(j in 1:length(toMatch)){
    tmp = str_extract_all(sentences[i], toMatch[j])
    if (length(tmp[[1]]) > 0) {
      lst[[i]][j] <- tmp[[1]]
    }
  }}
lapply(lst, function(x) x[!is.na(x)])
lst

试试这个lst[[i]][j]试试嵌套的lappy函数。不确定这与or版本相比有多好,但肯定比嵌套循环好:LapplyContents、functionx UnlistApplyMatch、functiony str_extract_allx、,y@Val,建议使用嵌套循环..如果要单独检查每个名称,使用固定正则表达式模式的好处是,它比非固定模式快c.p。但当然,循环并多次运行正则表达式也有缺点。一个选项是lapplytoMatch,functionm stringi::stri_extract_all_FixedSequences,m,simplify=TRUE@docendodiscimus也许我应该换一种说法:它肯定比这个嵌套循环好,也就是说文章中的那个循环。
for(i in 1:length(sentences)){
    for(j in 1:length(toMatch)){
        lst<-str_extract_all(sentences[i], toMatch[j])
        }}
library(stringr)

sentences <- c(
"Opposed as a reformer at Tübingen, he accepted a call to the University of Wittenberg by Martin Luther, recommended by his great-uncle Johann Reuchlin",
" Melanchthon became professor of the Greek language in Wittenberg at the age of 21 with the help of Martin Luther",
" He studied the Scripture, especially of Paul, and Evangelical doctrine",
" He was present at the disputation of Leipzig (1519) as a spectator, but participated by his comments.",                                          
" Johann Eck having attacked his views, Melanchthon replied based on the authority of Scripture in his Defensio contra Johannem Eckium")

toMatch <- c("Martin Luther", "Paul", "Melanchthon")

for(i in 1:length(sentences)){
  lst[[i]] <- NA * seq(length(toMatch))
  for(j in 1:length(toMatch)){
    tmp = str_extract_all(sentences[i], toMatch[j])
    if (length(tmp[[1]]) > 0) {
      lst[[i]][j] <- tmp[[1]]
    }
  }}
lapply(lst, function(x) x[!is.na(x)])
lst