我有一个不同长度的矢量列表 . 第一列有一个整数,表示向量中的索引,我需要对向量进行子集化 .
v1 <- c(6,1,2,3,4,5,6,7,8,9,10)
v2 <- c(5,1,2,3,4,5)
v3 <- c(3,1,2,3,4,5,6,7,8,9,10,11,12,13)
我需要对两侧索引值周围的两个位置进行子集化,包括索引位置 . 例如,在第一个向量中,索引是6,所以我需要第4到第8个位置 .
当索引太靠近向量的末尾并且出现“未定义列选择”错误时,会出现问题 . 我想将列表中的所有向量子集化并将它们放在一个数据帧中,未定义的列替换为NA,以便它看起来像这样:
X1 X2 X3 X4 X5
3 4 5 6 7
2 3 4 5 NA
NA 1 2 3 4
总体目标是对列进行各种汇总统计,缺失值也可以 .
编辑:
每个向量的第一个元素不是我试图操作的数据的一部分 . 它只是一个索引,告诉我在向量的其余部分中将数据子集的位置 .
第一个元素永远不是1.最低元素可以是2,最高元素取决于向量的长度 . 以下是使用相同数据的一些其他示例,但更改第一个元素以显示这将如何影响子集 .
x1 <- c(2,1,2,3,4,5)
X1 X2 X3 X4 X5
NA NA 1 2 3
x2 <- c(3,1,2,3,4,5)
X1 X2 X3 X4 X5
NA 1 2 3 4
x3 <- c(4,1,2,3,4,5)
X1 X2 X3 X4 X5
1 2 3 4 5
x4 <- c(5,1,2,3,4,5)
X1 X2 X3 X4 X5
2 3 4 5 NA
x5 <- c(6,1,2,3,4,5)
X1 X2 X3 X4 X5
3 4 5 NA NA
2 回答
我认为您在描述任务时遇到问题,因为第三行中的NA与描述不符,尤其是在您的评论之后 . 如果您更改问题以便合理地获得第三行(当前不正确),那么您需要使用左NA填充向量: