у меня есть вектор ширины,R преобразовать вектор чисел в пропуске индексов
ws = c(1,1,2,1,3,1)
Из этого вектора я хотел бы иметь еще один вектор этой формы:
indexes = c(1,2,3,5,6,7,9,11,12)
Для того, чтобы создать такой вектор я сделал следующее цикл в R:
ws = c(1,1,2,1,3,1)
indexes = rep(0, sum(ws))
counter = 1
counter2 = 1
last = 0
for(i in 1:length(ws))
{
if (ws[i] == 1)
{
indexes[counter] = counter2
counter = counter + 1
} else {
for(j in 1:ws[i])
{
indexes[counter] = counter2
counter = counter + 1
counter2 = counter2+2
}
counter2 = counter2 - 2
}
counter2 = counter2+1
}
логика следующим образом, каждый элемент WS определяет respectiv e количество элементов в индексе. Например, если ws равно 1, соответствующее число элементов в индексах равно 1, но если ws равно> 1, скажем 3, то соответствующее число элементов в индексе равно 3, а элементы пропускаются 1 на 1, что соответствует 3,5,7.
Однако, я бы хотел избежать циклов, поскольку они имеют тенденцию быть очень медленными в R. Есть ли у вас какие-либо предложения о том, как добиться таких результатов только с помощью векторных операций? или еще более crantastic решение?
Спасибо!
это супер красностатический! :-) спасибо. – Dnaiel