使用先前 magrittr 链的输出作为进一步参数的参数
use output of previous magrittr chains as arguments to further arguments
如果我有下面的例子:
library(text2vec)
library(magrittr)
reviews <- movie_review[1:10,]
vocabInsomnia <- reviews$review %>% itoken(tolower, word_tokenizer, n_chunks = 10) %>%
create_vocabulary %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer %>%
create_dtm(<output_from_itoken>,<output_from_vocab_vectorizer>)
您可以看到,在最后一个链序列中,我想使用前面两个步骤的输出作为 create_dtm
函数的参数。我只知道如何直接输入链之前的输出,即 vocab_vectorizer
的输出,但不知道序列中第一个链的函数 itoken
的输出。 magrittr 允许这样做吗?
我不知道是否有更清洁或更有效的方法来执行此操作,但在这种情况下我通常做的是将管道嵌套在最高级别,我需要从中提取输入并通过管道输入使用 .
继续链的输出。
library(text2vec)
library(magrittr)
reviews <- movie_review[1:10,]
vocabInsomnia <- reviews$review %>%
itoken(tolower, word_tokenizer, n_chunks = 10) %>%
create_dtm(., create_vocabulary(.) %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer())
vocabInsomnia
#> 10 x 6 sparse Matrix of class "dgCMatrix"
#> an so by are he br
#> 1 2 4 . 2 9 8
#> 2 . 1 1 . . .
#> 3 1 . 6 7 . 2
#> 4 4 1 3 2 . 4
#> 5 2 . 1 1 . .
#> 6 . . . . . .
#> 7 1 3 . . . .
#> 8 . 1 . . 2 .
#> 9 . . . . 1 4
#> 10 . . . . . 2
由 reprex package (v2.0.1)
于 2022-01-18 创建
我们可以使用 pipeR
创建一个临时对象
library(text2vec)
library(pipeR)
library(magrittr)
reviews$review %>%
itoken(tolower, word_tokenizer, n_chunks = 10) %>>%
(~ tmp) %>%
create_vocabulary %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer %>%
create_dtm(tmp, .)
-输出
10 x 6 sparse Matrix of class "dgCMatrix"
an so by are he br
1 2 4 . 2 9 8
2 . 1 1 . . .
3 1 . 6 7 . 2
4 4 1 3 2 . 4
5 2 . 1 1 . .
6 . . . . . .
7 1 3 . . . .
8 . 1 . . 2 .
9 . . . . 1 4
10 . . . . . 2
如果我有下面的例子:
library(text2vec)
library(magrittr)
reviews <- movie_review[1:10,]
vocabInsomnia <- reviews$review %>% itoken(tolower, word_tokenizer, n_chunks = 10) %>%
create_vocabulary %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer %>%
create_dtm(<output_from_itoken>,<output_from_vocab_vectorizer>)
您可以看到,在最后一个链序列中,我想使用前面两个步骤的输出作为 create_dtm
函数的参数。我只知道如何直接输入链之前的输出,即 vocab_vectorizer
的输出,但不知道序列中第一个链的函数 itoken
的输出。 magrittr 允许这样做吗?
我不知道是否有更清洁或更有效的方法来执行此操作,但在这种情况下我通常做的是将管道嵌套在最高级别,我需要从中提取输入并通过管道输入使用 .
继续链的输出。
library(text2vec)
library(magrittr)
reviews <- movie_review[1:10,]
vocabInsomnia <- reviews$review %>%
itoken(tolower, word_tokenizer, n_chunks = 10) %>%
create_dtm(., create_vocabulary(.) %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer())
vocabInsomnia
#> 10 x 6 sparse Matrix of class "dgCMatrix"
#> an so by are he br
#> 1 2 4 . 2 9 8
#> 2 . 1 1 . . .
#> 3 1 . 6 7 . 2
#> 4 4 1 3 2 . 4
#> 5 2 . 1 1 . .
#> 6 . . . . . .
#> 7 1 3 . . . .
#> 8 . 1 . . 2 .
#> 9 . . . . 1 4
#> 10 . . . . . 2
由 reprex package (v2.0.1)
于 2022-01-18 创建我们可以使用 pipeR
library(text2vec)
library(pipeR)
library(magrittr)
reviews$review %>%
itoken(tolower, word_tokenizer, n_chunks = 10) %>>%
(~ tmp) %>%
create_vocabulary %>%
prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) %>%
vocab_vectorizer %>%
create_dtm(tmp, .)
-输出
10 x 6 sparse Matrix of class "dgCMatrix"
an so by are he br
1 2 4 . 2 9 8
2 . 1 1 . . .
3 1 . 6 7 . 2
4 4 1 3 2 . 4
5 2 . 1 1 . .
6 . . . . . .
7 1 3 . . . .
8 . 1 . . 2 .
9 . . . . 1 4
10 . . . . . 2