【问题标题】:Duplicating R dataframe vector values using another vector as a guide使用另一个向量作为指导复制 R 数据帧向量值
【发布时间】:2020-09-15 02:36:02
【问题描述】:

我有以下 R 数据框:df = data.frame(value=c(5,4,3,2,1), a=c(2,0,1,6,9), b=c(7,0,0,3,4))。我想将ab 的值复制为value 中相应位置值的次数。例如,扩展 b 看起来像 b_ex = c(7,7,7,7,7,2,2,2,4)b_ex 中不会出现三或四的值,因为 b[2]b[3] 中的值为零。扩展的向量将被分配名称并且是独立的。

谢谢!

【问题讨论】:

  • 啊,是的。谢谢!我忘了使用data.frame。现在修好了。感谢您了解这一点。

标签: r dataframe vector


【解决方案1】:

也许你正在寻找:

result <- lapply(df[-1], function(x) rep(x[x != 0], df$value[x != 0]))
#$a
#[1] 2 2 2 2 2 1 1 1 6 6 9

#$b
#[1] 7 7 7 7 7 3 3 4

要将它们作为全局环境中的单独向量使用list2env

list2env(result, .GlobalEnv)

【讨论】:

  • 另外,虽然我在吹毛求疵,但我认为你想要x != 0,因为否则这将失败rep吃负值。
  • 你如何重复消极的​​时间?如果有负值,它们不应该被丢弃吗?
  • 我的意思是另一边的负值,比如-2重复5次,而不是2重复5次。这将放弃我相信的那些。
  • 哦..我现在明白了。是的,你是对的。更新了答案。
猜你喜欢
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多