我想写一个循环,它将帮助我创建一个带字符串的向量。我有表格,字符串和数字,每个字符串应重复多少次。
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。如何获取字符串而不是这些数字?
答案 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$Rival
是character
。
或者您想要以下内容吗?
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)