2015-09-01 51 views
0

我已经在代码中使用for循环创建了bigrams。但我无法将其从循环中提取出来。如何在R中的for循环中获得输出?

for(w in j) 
{ 
BigramTokenizer <- function(x) NGramTokenizer(x,Weka_control(min=2,max=2)) 
k <- BigramTokenizer(w) 
print(k) #returns all words in the loop 
} 

k #only return the words in the last sentence 

如何在调用变量'k'时将整个输出从for循环中取出?

+0

有几种方法。你可以使用'<< - '(这是不可取的)或'assign'函数。 – SabDeM

+1

bigram函数不会随'w'变化,因此您应该将其定义从循环中取出。或者更好,不要麻烦地定义它:'lapply(j,NGramTokenizer,Weka_control(min = 2,max = 2))' – Frank

回答

2

听起来你想要得到循环内生成的k变量列表。你可以用lapply功能做到这一点:

results <- lapply(j, function(w) { 
    BigramTokenizer <- function(x) NGramTokenizer(x,Weka_control(min=2,max=2)) 
    k <- BigramTokenizer(w) 
    return(k) 
}) 

现在你可以用results[[2]]访问k值的j第一要素与results[[1]],结果为j第二个元素,依此类推。