如何使用 seq() 和 rep() 以及 paste() 生成特定向量?
How do I use seq() and rep() and paste() to generate a specific vector?
我试图在不使用的情况下生成以下向量
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 循环来生成它?似乎必须有一个更简单的方法......
我是矢量生成的新手,这些功能看起来一点也不直观。如果你能朝正确的方向戳一下,我相信我能弄明白。谢谢!
一种方法是:
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)
我们可以使用outer
c(outer(vec, seq_along(vec), FUN = paste0))
我试图在不使用的情况下生成以下向量
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 循环来生成它?似乎必须有一个更简单的方法...... 我是矢量生成的新手,这些功能看起来一点也不直观。如果你能朝正确的方向戳一下,我相信我能弄明白。谢谢!
一种方法是:
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)
我们可以使用outer
c(outer(vec, seq_along(vec), FUN = paste0))