【问题标题】:r: how to partition a list or vector into pairs at an offset of 1r:如何在偏移量 1 处将列表或向量分区成对
【发布时间】:2017-05-03 12:01:42
【问题描述】:

对于基本问题,我很抱歉,但我需要以 1 的偏移量对数字列表进行分区。 例如。, 我有一个类似的列表:

c(194187, 193668, 192892, 192802 ..)

并且需要一个列表,例如:

c(c(194187, 193668), c(193668, 192892), c(192892, 192802)...)

其中列表 n 的最后一个元素是列表 n+1 的第一个元素。必须有办法做到这一点 分裂() 但我想不通 在mathematica中,我需要的命令是 Partition[list,2,1]

【问题讨论】:

  • 最后一次观察的结果是什么。
  • x <- c(194187, 193668, 192892, 192802); Map(c, x[-length(x)], x[-1])
  • 尼尔森,你能接受一个答案吗?

标签: r partition


【解决方案1】:

你可以这样尝试,使用 zoo 库

library(zoo)

x <- 1:10     # Vector of 10 numbers
m <- rollapply(data = x, 2, by=1, c)    # Creates a Matrix of rows = n-1, each row as a List
l <- split(m, row(m))   #splitting the matrix into individual list

输出:

> l
$`1`
[1] 1 2

$`2`
[1] 2 3

$`3`
[1] 3 4

【讨论】:

    【解决方案2】:

    这是一个使用base R 创建vector 元素的选项

    v1 <- rbind(x[-length(x)], x[-1])
    c(v1)
    #[1] 194187 193668 193668 192892 192892 192802
    

    如果我们需要list

    split(v1, col(v1))
    

    数据

    x <- c(194187, 193668, 192892, 192802);
    

    【讨论】:

      猜你喜欢
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 2017-05-04
      • 2023-03-14
      相关资源
      最近更新 更多