【问题标题】:Is there any function that will allow me to transform this list into a set of vectors?是否有任何函数可以让我将此列表转换为一组向量?
【发布时间】:2021-01-26 04:51:36
【问题描述】:

我想将此列表[1, 2, 3, 4, 5, 6, 7, 8, 9] 转换为以下向量集

(2,3,4) 
(3,4,5) 
(4,5,6) 
(5,6,7)
(6,7,8) 
(7,8,9)

【问题讨论】:

  • 这可以做到。您是否尝试执行滚动平均值(或类似)?如果是这样,直接使用工具会更容易,例如data.table::frollmean
  • 为什么要从输出中排除(1, 2, 3)
  • @RonakShah 不是真的,我只是忘了把它放在那里

标签: r list vector


【解决方案1】:
x = c(1, 2, 3, 4, 5, 6, 7, 8, 9)
n = length(x)
lapply(1:(n - 2), function(i) x[i:(i + 2)])

【讨论】:

  • 我会做lapply(1:(n - 2), function(i) unlist(x[i:(i + 2)])) case x 实际上是一个列表,+1。
  • 谢谢!我按照@jay.sf 说的做了,因为它是一个列表
【解决方案2】:

你可以这样做:

dat <- 1:9
n <- length(dat)
lvl <- 2:(n - 2)
split(dat[lvl + rep(0:2, each = n - 3)], rep(lvl, 3))
#R> $`2`
#R> [1] 2 3 4
#R> 
#R> $`3`
#R> [1] 3 4 5
#R> 
#R> $`4`
#R> [1] 4 5 6
#R> 
#R> $`5`
#R> [1] 5 6 7
#R> 
#R> $`6`
#R> [1] 6 7 8
#R> 
#R> $`7`
#R> [1] 7 8 9
#R>

【讨论】:

    猜你喜欢
    • 2020-07-11
    • 2010-11-28
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多