【问题标题】:assign the same value to multiple variables为多个变量分配相同的值
【发布时间】:2017-09-16 08:34:58
【问题描述】:

我希望将相同的值分配给data.frame 中的多个变量。我在这里查看了多个看起来相似的帖子,但似乎没有解决我的具体问题。

Mass variable declaration and assignment in R?

Assign multiple new variables on LHS in a single line in R

这是我想创建的data.frame 示例:

data = data.frame(
  a1 =  0.614, a2 =  0.614, a3 =  0.614, a4 =  0.614, a5  =  0.614,
  a6 =  0.614, a7 =  0.614, a8 =  0.614, a9 =  0.614, a10 =  0.614,
  c1 = -6.198, c2 = -6.198, c3 = -6.198, c4 = -6.198, c5  = -6.198,
  c6 = -6.198, c7 = -6.198, c8 = -6.198, c9 = -6.198, c10 = -6.198,
  d1 = 35.952, d2 = 35.952, d3 = 35.952, d4 = 35.952, d5  = 35.952,
  d6 = 35.952, d7 = 35.952, d8 = 35.952, d9 = 35.952, d10 = 35.952)

感谢您的任何建议或帮助。我更喜欢基础R 中的解决方案。很抱歉,如果答案很明显。

【问题讨论】:

    标签: r


    【解决方案1】:

    怎么样(在输出data.frame 中插入任意数量的row.names):

    data = data.frame(row.names = '1')
    data[paste0('a', 1:10)] = .614
    data[paste0('c', 1:10)] = -6.198
    data[paste0('d', 1:10)] = 35.952
    

    或者(列名不会完全正确;感谢@Frank 在这里简化了我的方法)

    data.frame(a = .641, c = -6.198, d = 35.052)[ , rep(1:3, each = 10)]
    

    【讨论】:

    • 两个答案都很好。我通常会等待 24 小时以上才能接受,但谢谢。
    【解决方案2】:

    一口气搞定:

    n <- 10
    setNames(
      data.frame(rep(list(0.641,-6.198,35.952), each=n)),
      paste0(rep(c("a","c","d"),each=n), seq_len(n))
    )
    

    【讨论】:

    • 如果我们想要输出data.frame 中的多行,我不知道如何调整它(从头开始,nvm,只需正确声明list。)
    • @MichaelChirico - 最后只敲[rep(1,nrows),]
    • 很好,我有一个案例,例如在给定的列中多次重复c(.641, .58),但两者都很容易适应这种方法
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 2010-11-28
    • 2013-04-27
    • 2013-06-03
    • 2020-06-25
    • 2014-08-19
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多