一列中的重复项排除了times值对应的一项
Repeating items in a column excluding the one item corresponding to times value
下面给定的 R 脚本重复给定名称 4 次。我需要做的是,对于每个 "times" 值,与时间值对应的元素不会出现,例如对于 times = "1",只应出现 "David"、"Murdoch"、"August",对于 times = "2"、"Robert"、"Murdoch"、"August",对于times = 3,应该出现"Robert","David","August"等等。最后我应该得到总共 12 个值在这里重复。目前是 16。请帮助我提供一个没有循环的可扩展解决方案,如果我需要在大数据上应用它,那么速度很快。此外,如果 "rep" 函数可以替换为更快的解决方案。谢谢,请帮忙。
names <- c("Robert","David","Murdoch","August")
names_rep <- rep(names, times = 4)
我不认为 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"
我们可以用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"
下面给定的 R 脚本重复给定名称 4 次。我需要做的是,对于每个 "times" 值,与时间值对应的元素不会出现,例如对于 times = "1",只应出现 "David"、"Murdoch"、"August",对于 times = "2"、"Robert"、"Murdoch"、"August",对于times = 3,应该出现"Robert","David","August"等等。最后我应该得到总共 12 个值在这里重复。目前是 16。请帮助我提供一个没有循环的可扩展解决方案,如果我需要在大数据上应用它,那么速度很快。此外,如果 "rep" 函数可以替换为更快的解决方案。谢谢,请帮忙。
names <- c("Robert","David","Murdoch","August")
names_rep <- rep(names, times = 4)
我不认为 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"
我们可以用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"