【问题标题】:Equalizing the length of 3 vectors in R based on a rule根据规则均衡R中3个向量的长度
【发布时间】:2018-05-30 01:11:15
【问题描述】:

假设我有 3 个向量 xyz,它们的长度不相等(请参阅下面的代码)。

我想知道如何让较短向量的 最后一个成员此处为 xy)重复,以使 3 个向量始终变为只要它们不等长,就等长?

例如,在下面的示例中,2 中的 x 重复 2 次,"hi" 中的 y 重复 3 次。

x = c(1, 2) ; y = c("hi") ; z = c(1, 2, 3, 4)

【问题讨论】:

  • 为什么要投反对票?我得到了一个很好的答案。
  • 我被否决票震惊了!!我猜有人误读了你的问题。

标签: r function vector


【解决方案1】:
foo = function(...){
    ml = list(...)
    L = max(lengths(ml))
    lapply(ml, function(x) c(x, rep(tail(x, 1), L - length(x))))
}
foo(x, y, z)
#[[1]]
#[1] 1 2 2 2

#[[2]]
#[1] "hi" "hi" "hi" "hi"

#[[3]]
#[1] 1 2 3 4

【讨论】:

  • 这些天你看到人们喜欢奇怪的艺术。这是一件经典的艺术品。干杯。
猜你喜欢
  • 1970-01-01
  • 2018-11-03
  • 2018-09-06
  • 2017-01-08
  • 2014-06-02
  • 2015-05-05
  • 1970-01-01
  • 2016-07-20
  • 2015-02-19
相关资源
最近更新 更多