下面给出的R脚本重复给定的名字4次。我需要这样做,当对于每个“时间”值时,对应于时间值的元素不出现,例如,对于时代=“1”,只有“大卫”,“默多克”,“八月”应出现,时间=“2”,“罗伯特”,“默多克”,“八月”,时间= 3,“罗伯特”,应该出现“大卫”,“八月”等。最后,我应该在这里重复总共12个值。目前它是16.请帮助我一个没有循环的可扩展解决方案,如果我需要将其应用于大数据,这是快速的。此外,如果“rep”功能可以用更快的解决方案替换。谢谢,请帮助。
names <- c("Robert","David","Murdoch","August")
names_rep <- rep(names, times = 4)
答案 0 :(得分:2)
我不认为rep
是正确的功能。您可以使用sapply
来跳过相应的索引位置。
c(sapply(seq_along(names), function(x) names[-x]))
#[1] "David" "Murdoch" "August" "Robert" "Murdoch" "August"
#[7] "Robert" "David" "August" "Robert" "David" "Murdoch"
答案 1 :(得分:1)
我们可以使用rep
创建,然后删除元素
v1 <- rep(names, 4)
v1[-seq(1, length(v1), by = 5)]
#[1] "David" "Murdoch" "August" "Robert" "Murdoch"
#[6] "August" "Robert" "David" "August" "Robert" "David"
#[12] "Murdoch"