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