【发布时间】:2015-01-14 00:49:45
【问题描述】:
下面是我的 R 代码,它接受向量 a 并返回向量 b。向量 b 应该是具有特定格式的向量 a 的唯一标识符。请注意,a 是按所有相同的数字并排排列的。
a <- c(1, 1, 1, 2, 2, 2, 3, 4, 5, 6, 6, 6, 6, 7, 8, 9, 9)
b <- NULL
for(i in 5:length(a)){
if (a[i] == a[i - 1] & a[i] == a[i - 2] & a[i] == a[i - 3] & a[i] == a[i - 4])
b[i] <- paste(a[i], "-", 4, sep="")
else if (a[i] == a[i - 1] & a[i] == a[i - 2] & a[i] == a[i - 3])
b[i] <- paste(a[i], "-", 3, sep="")
else if (a[i] == a[i - 1] & a[i] == a[i - 2])
b[i] <- paste(a[i], "-", 2, sep="")
else if (a[i] == a[i - 1])
b[i] <- paste(a[i], "-", 1, sep="")
else
b[i] <- paste(a[i], "-", 0, sep="")
}
#The first 4 values in vector b have to manually entered
#because the for loop checks up to 4 consecutive numbers in a
b[1] <- "1-0"
b[2] <- "1-1"
b[3] <- "1-2"
b[4] <- "2-0"
b
上面的代码根据需要返回 b,但是,如果向量 a 有超过 4 个相同的连续数字,那么 for 循环将产生包含一些相同元素的 b。如何改进这个 for 循环,以便可以为任意数量的相同连续数字赋予适当的唯一标识符。
我正在考虑使用某种嵌套的 for 循环,但是如何在 if 语句中完成呢?
【问题讨论】: