如何从向量创建子向量?每个子向量均由主向量的后续值组成

时间:2019-05-15 09:48:22

标签: r

我正在尝试从主向量创建子向量。每个子向量将由主向量中的下一个后续值组成。

我正在尝试避免循环。 x是输入,我希望输出为vec_1vec_2,依此类推。

x<-c(23,45,32,45,1,67,89,92,101,5,63,42,65)

vec_1 <- c(23,45)

vec_2 <- c(23,45,32)

vec_3 <- c(23,45,32,45)

vec_4 <- c(23,45,32,45,1)

我试图以此方式生成带有索引的字符串向量。 我无法将字符串从"1:5"转换为c(1:5)

x<-c(23,45,32,45,1,67,89,92,101,5,63,42,65)

a<-paste("1:",c(5:length(x)),sep="")

x[as.integer(a[1])] ###This does not work

2 个答案:

答案 0 :(得分:5)

使用 exports.handler = function(event, context) { console.log('Lambda B Received event:', JSON.stringify(event, null, 2)); //context.succeed(event.message); var obj = { name : "123" , city : "New York" }; const response = { statusCode: 200, body: JSON.stringify(obj) }; return response; //var pullResults = JSON.parse(response.body); //console.log(pullResults.name); };

的选项
split

答案 1 :(得分:3)

我们可以使用lapply并将x的值子集来创建向量列表。

lapply(seq_along(x), function(p) x[seq_len(p)])

#[[1]]
#[1] 23

#[[2]]
#[1] 23 45

#[[3]]
#[1] 23 45 32

#[[4]]
#[1] 23 45 32 45

#[[5]]
#[1] 23 45 32 45  1
#....

如果您想给他们命名,可以

a1 <- lapply(seq_along(x), function(p) x[seq_len(p)])
a1 <- setNames(a1, paste0("vec", seq_len(length(x))))

,并且可以使用其名称分别访问每个人。

a1[["vec1"]]
#[1] 23
a1[["vec2"]]
#[1] 23 45

您也可以对map做同样的事情

purrr::map(seq_along(x), function(p) x[seq_len(p)])