我正在研究一个创建矢量的代码bloke但是在这个列表中我希望有19次和第二次18次,但标签必须是“V1”,“V2”。更具体一点:
c("V1", "V1", "V1", "V1", "V1", "V1", "V1", "V1", "V1", "V1", "V1",
"V1", "V1", "V1", "V1", "V1", "V1", "V1", "V1", "V2", "V2", "V2",
"V2", "V2", "V2", "V2", "V2", "V2", "V2", "V2", "V2", "V2", "V2",
"V2", "V2", "V2", "V2", "V3", "V3", "V3", "V3", "V3", "V3", "V3",
"V3", "V3", "V3", "V3", "V3", "V3", "V3", "V3", "V3", "V3", "V4",
"V4", "V4", "V4", "V4", "V4", "V4", "V4", "V4", "V4", "V4", "V4",
"V4", "V4", "V4", "V4", "V5", "V5", "V5", "V5", "V5", "V5", "V5",
"V5", "V5", "V5", "V5", "V5", "V5", "V5", "V5", "V6", "V6", "V6",
"V6", "V6", "V6", "V6", "V6", "V6", "V6", "V6", "V6", "V6", "V6",
"V7", "V7", "V7", "V7", "V7", "V7", "V7", "V7", "V7", "V7", "V7",
"V7", "V7", "V8", "V8", "V8", "V8", "V8", "V8", "V8", "V8", "V8",
"V8", "V8", "V8", "V9", "V9", "V9", "V9", "V9", "V9", "V9", "V9",
"V9", "V9", "V9", "V10", "V10", "V10", "V10", "V10", "V10", "V10",
"V10", "V10", "V10", "V11", "V11", "V11", "V11", "V11", "V11", "V11",
"V11", "V11", "V12", "V12", "V12", "V12", "V12", "V12", "V12", "V12",
"V13", "V13", "V13", "V13", "V13", "V13", "V13", "V14", "V14", "V14",
"V14", "V14", "V14", "V15", "V15", "V15", "V15", "V15", "V16", "V16",
"V16", "V16", "V17", "V17", "V17", "V18", "V18", "V19" )
我想创建V1的19和V2的18。这是我的代码,我可以创建19次第一项等等但是如何单独创建项目标签和项目编号?
z <- c()
for (i in 19:1){
k <- c(paste("V",i, sep = ""))
k <- c(k,rep(k,i-1))
z <- c(z, c(k))
}
答案 0 :(得分:3)
对@ arkun的评论略有不同:
rep(sprintf('V%d', 1:19), c(19:1))
这里我使用sprintf
来创建输入向量,请注意它是矢量化的:
sprintf('V%d', 1:19)
[1] "V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8" "V9" "V10" "V11" "V12"
[13] "V13" "V14" "V15" "V16" "V17" "V18" "V19"
其中%d
表示此处应替换整数值。
接下来我们调用rep
,我们必须记住(引自rep
文档):
'times'给出(非负)数的整数向量 重复每个元素的时间,如果长度'长度(x)',或 如果长度为1,则重复整个向量。否定或 'NA'值是错误的。
传递矢量19:1
导致第一项重复19次,第二项18次,等等。注意19:1
创建一个从19到1的向量。
答案 1 :(得分:1)
对于新问题,我们可以循环播放1:20,并使用&#39; V&#39;将每个数字的序列设置为20,unlist
和paste
。
paste0('V', unlist(lapply(1:20, function(i) i:20)))
或者我们可以使用rep
并删除一些元素
v1<- 1:20 +rep(0:20, each=20)
paste0('V', v1[v1 < 21])
发布我的评论(以及@ rbm&#39;评论)作为原始问题的解决方案。
rep(paste0('V', 1:19),c(19:1))