重复字符串的循环

时间:2015-08-11 07:32:20

标签: r

我想写一个循环,它将帮助我创建一个带字符串的向量。我有表格,字符串和数字,每个字符串应重复多少次。

     Rival Elements
1    ORL    3
2    MIA    4 

所以我的代码应该创建一个向量,v = ORL,ORL,ORL,MIA,MIA,MIA,MIA

i <- 1
while (i <= 1) {
xx <- c(rep(qwe$Rival[i], qwe$Elements[i]))
i<- i+1
print(xx)
}

而不是这些xx = ORL,ORL,ORL,我收到了xx = 23,23,23。如何获取字符串而不是这些数字?

3 个答案:

答案 0 :(得分:1)

这是你想要的吗?

# Load your data
qwe <- read.table(stringsAsFactors = FALSE, text = "
Rival Elements
1    ORL    3
2    MIA    4 ")

#qwe$Rival <- as.character(qwe$Rival) # May or may not be needed
v <- with(qwe, rep(Rival, Elements))
print(v)
#[1] "ORL" "ORL" "ORL" "MIA" "MIA" "MIA" "MIA"

确保qwe$Rivalcharacter

或者您想要以下内容吗?

u <- paste(v, collapse = ", ")
print(u)
#[1] "ORL, ORL, ORL, MIA, MIA, MIA, MIA"

这是一个长度为1的向量,显示的元素。

答案 1 :(得分:0)

初看你的问题可以通过使用as.character()来解决。

你也希望&lt; = 2,因为R从1开始计数,而不是0.

答案 2 :(得分:0)

专栏&#34;竞争对手&#34;在您的数据框中显然被定义为因子。将函数c()应用于因子,得到因子水平的数字表示,参见:

c(qwe$Rival)

在这种情况下使用as.vector()代替。但是,像Pascal一样,你的代码中没有必要使用c()函数。

要摆脱循环,可以使用

获取向量
xx = mapply(rep, qwe$Rival, qwe$Elements)