使用 R 中的序列列表对向量进行子集化

Subsetting a vector using a list of sequences in R

我有一个包含文本数据的字符向量,我可以通过选择单独的行来对其进行子集化。最终目标是将向量的不同序列存储为独立变量或列表的元素。我可以使用一个简单的循环来做到这一点,但我没有成功地通过序列列表对字符向量进行子集化。

参见以下示例:

Text<-scan("~/Desktop/Lorem Ipsum.txt", what="character", sep="\n")

 [1] "Lorem ipsum dolor sit amet, "                                                                          
 [2] "consectetur adipiscing elit,"                                                                          
 [3] "sed do eiusmod tempor incididunt "                                                                     
 [4] "ut labore et dolore magna aliqua."                                                                     
 [5] "Ut enim ad minim veniam, "                                                                             
 [6] "quis nostrud exercitation "                                                                            
 [7] "ullamco laboris nisi ut aliquip ex ea commodo consequat."                                              
 [8] "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
 [9] "Excepteur sint occaecat cupidatat non proident,"                                                       
[10] "sunt in culpa qui officia deserunt mollit anim id est laborum."

向量子集的正常方法是 text[1:4],返回

[1] "Lorem ipsum dolor sit amet, "      
[2] "consectetur adipiscing elit,"    
[3] "sed do eiusmod tempor incididunt "
[4] "ut labore et dolore magna aliqua."

在一个列表中,我存储了代表向量中不同行集的数字序列。

Sentence.numbers<-c(1:4, 5:7, 8, 9:10).

现在我想一次对构成不同句子的所有数字进行子集化,并将它们存储在列表中以供进一步分析。

我用了Text[Sentence.numbers],但是报错信息是"invalid index type 'list'"。

有没有办法使用值列表进行子集化?

您需要将 Sentence.numbers 设置为列表,然后使用 lapply -

Sentence.numbers <- list(1:4, 5:7, 8, 9:10)

lapply(Sentence.numbers, function(x) Text[x])

举个例子 -

lapply(Sentence.numbers, function(x) letters[x])

[[1]]
[1] "a" "b" "c" "d"

[[2]]
[1] "e" "f" "g"

[[3]]
[1] "h"

[[4]]
[1] "i" "j"