Я пытаюсь создать набор новых векторов на основе правила для списка векторов. Мой вход состоит из 3 нормальных векторов (index
, rfree
, ret
) и список из нескольких векторов (roll
), причем все векторы имеют одинаковую длину. Я хочу, чтобы новые векторы следовали правилу: если index> roll -> ret, else rfree, чтобы индекс оценивался против числа «k» векторов валиков, дающих «k» новые векторы, которые состоят только из входов ret и rfree , Моя текущая программа не работает, и я не могу понять, почему. Сообщение об ошибке, которое я получаю, этоDouble for-loop не работает
"Error in `*tmp*`[[j]] : subscript out of bounds"
Но я не могу понять, почему. Любая помощь приветствуется.
#Input:
roll <- list(runif(85),runif(85))
index <- runif(85)
rfree <- rnorm(85)
ret <- rnorm(85)
#Programe:
aret <- function(index, roll, ret, rfree, k=2){
aret <- list()
for (j in seq(k))
for (i in 1:length(ret)){
if (roll[[j]][i]>index[i])(aret[[j]][i] <- ret[i])
else(aret[[j]][i] <- rfree[i])
}
}
'к = k' ничего не делает здесь , И, чтобы полностью ответить на ваш вопрос, нам нужно будет увидеть некоторые ваши данные. В частности, 'index,' roll', 'ret' и' rfree'. Я предполагаю, что происходит то, что 'k' длиннее, чем' ist' или 'roll', поэтому вы видите ошибку ... используйте что-то вроде' dput', чтобы включить ваши данные и потратить некоторое время на [прочитать о воспроизводимых примерах] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – Justin
Было бы неплохо, если бы вы представили несколько примеров ваших векторов, чтобы мы могли более четко понять вас , Например, используйте 'dput (roll)', чтобы мы могли просто вырезать и вставить его в наши браузеры. – nograpes
Хорошо, мне нужно будет вернуться, как только я прочитаю о dput. Извините за непонятный вопрос. – user3248544