Я не могу понять, что происходит с моим циклом, и это слишком сложно для моего текущего уровня. Я уже пробовал apply
, но, очевидно, я делаю что-то не так, поэтому я не использовал его вообще.Ошибка синтаксиса нескольких циклов
library('wavelets')
library('benford.analysis')
indeces <- ls() # my initial datasets
wfilters <- array(c("haar","la8","d4","c6")) # filter option in "modwt" function
wfiltname <- array(c("h","l","d","c")) # to rename the new objects
for (i in 1:nrow(as.array(indeces))) {
x <- get(as.matrix(indeces[i]))
x <- x[,2]
# Creates modwt objects equal to the number of filters
for (j in 1:nrow(as.array(wfilters))) {
x <- wavelets::modwt(x, filter = wfilters[j], n.levels = 4,
boundary = "periodic")
# A loop that creates a matrix with benford fun output per modwt n.levels option
for (l in 1:4) {
x <- as.matrix([email protected]$W[l]) # n.levels are represented as [email protected]$W1, [email protected]$W2,...
x <- benford.analysis::benford(x, number.of.digits = 1,
sign = "both", discrete = T,
round = 3) # accepts matrices
x[,l] <- x$bfd$data.dist # it always has 9 elements
}
assign(paste0("b", wfiltname[j], indeces[i]), x)
}
}
Вышеуказанный цикл должен быть воспроизводимым с любыми данными (где значения указаны во второй колонке). Ошибка, которую я получаю, следующая:
Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x), :
'data' must be of a vector type, was 'NULL'
Я не был ко всем вашим кодом, но вы можете начать с изменения 'get (as.matrix (indeces [i]))' in 'as.matrix (get (indeces [i])) '. – Cath
Рекомендация для отладки: поместите 'browse()' в место до возникновения ошибки. BTW: в конечном итоге 'for (i in 1: length (indeces))' эквивалентно 'for (i в 1: nrow (as.array (indeces))) – jogo
Благодарим вас за комментарии. Я исправлю их, и я отредактирую свой пост. –