r - 如何选择向量中的相邻元素并将它们放入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]))}
但我有一个大数据。使用循环相对较慢。有没有直接获取结果的功能?非常感谢!
解决方案
我们可以使用head
和tail
分别忽略最后一个元素和第一个元素。
data.frame(a = head(vl, -1), b = tail(vl, -1))
# a b
#1 1 2
#2 2 3
#3 3 4
#4 4 5
编辑
如果需要对数据进行排序,我们可以使用apply
row-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
推荐阅读
- javascript - React Native App 仅通过浏览器运行
- php - Laravel Livewire Same Component Two Items Sync in One Page
- mongodb - 日期到字符串 MongoDB
- kotlin - Kotlin 文档中未解决的@sample
- html - 将 div 的高度设置为另一个 div 高度
- android - 如何在 MVVM 中进行新的网络调用?
- ios - 当我按下按钮时 UIView 到图像
- python - Python DataFrame:如何用一个特定位置的值替换 Nan
- java - 如何在Java中遍历json文件
- git - 在 Smart Git 中设置 SSH 客户端