【问题标题】:How do I use seq() and rep() and paste() to generate a specific vector?如何使用 seq() 和 rep() 和 paste() 生成特定向量?
【发布时间】:2021-05-12 17:26:06
【问题描述】:

我正在尝试生成以下向量而不使用 c(): a1, b2, b3, c4, c4, c6。我真的很难受。我尝试制作一个简单的 python 函数来帮助可视化它:

listy = []
size = 2
lets = ["a", "b", "c"]
iterator = 1
for i in range(1, 4):
    let = lets[i-1]
    for j in range(3-size):
        listy.append(let + str(iterator))
        iterator += 1
    size -= 1
print(listy)

但我无法获得与在 R 中工作类似的东西。我将非常感谢一些帮助。 我得到的最接近的是:

paste(rep(1:6), rep(letters[1:3]))

但很明显,那是错误的。我将不得不使用 for 循环来生成这个吗?似乎必须有一个更简单的方法...... 我是矢量生成的新手,这些功能似乎一点也不直观。如果你能在正确的方向上戳一下,我相信我能弄清楚。谢谢!

【问题讨论】:

    标签: r vector seq rep


    【解决方案1】:

    一种方法是:

    vec <- letters[1:3]
    tmp <- rep(vec, seq_along(vec))
    paste0(tmp, seq_along(tmp))
    #[1] "a1" "b2" "b3" "c4" "c5" "c6"
    

    通过硬编码,这类似于:

    paste0(rep(c('a', 'b', 'c'), 1:3), 1:6)
    

    【讨论】:

      【解决方案2】:

      我们可以使用outer

      c(outer(vec, seq_along(vec), FUN = paste0))
      

      【讨论】:

        猜你喜欢
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-09
        • 1970-01-01
        相关资源
        最近更新 更多