首页 > 解决方案 > 如何选择向量中的相邻元素并将它们放入R中的列表或矩阵中

问题描述

我有一个关于如何选择向量中的相邻元素并将它们放入 R 中的列表或矩阵的问题。例如:

vl <- c(1,2,3,4,5)

我想得到这样的结果:

1,2
2,3
3,4
4,5

结果可以在列表或矩阵中

我知道我们可以使用循环来获得结果。像这样:

pl <- list()
k=0
for (p in 1: length(vl)) {
          k=k+1
          pl[[k]] <- sort(c(vl[p],vl[p+1]))}

但我有一个大数据。使用循环相对较慢。有没有直接获取结果的功能?非常感谢!

标签: r

解决方案


我们可以使用headtail分别忽略最后一个元素和第一个元素。

data.frame(a = head(vl, -1), b = tail(vl, -1))

#  a b
#1 1 2
#2 2 3
#3 3 4
#4 4 5

编辑

如果需要对数据进行排序,我们可以使用applyrow-wise 对其进行排序。

vl <- c(2,5,3,1,6,4)
t(apply(data.frame(a = head(vl, -1), b = tail(vl, -1)), 1, sort))


#     [,1] [,2]
#[1,]    2    5
#[2,]    3    5
#[3,]    1    3
#[4,]    1    6
#[5,]    4    6

推荐阅读