Dear all,
My script returns the following error:
Error in storage.mode(test) <- "logical" :
(list) object cannot be coerced to type 'double'
I've looked around and some suggest that it could be the way data have been
imported. For my case, I don't think it is such. Rather I think it has to be
the way I define x1 and in1. x1 is an object in which the values are written to
which in turn serve as input.
The object, x, contain 32 files of 2x2 matrix.
Any guidance would be appreciated.
Muhammad
---------------------------------------------
# Cleans workspace
rm(list=ls())
# ---------- DATA ---------- #
# Load DATA[1]: Monthly anomalies
f <- list.files("C:/Documents and Settings/shil3148/Desktop/dsi",
"\\.txt$") # List files with pattern matching
x <- lapply(f, read.table) # DATA[1]: Monthly anomalies
# Prepare DATA[2]: Rolling Sum
nt <- 6
ed <- nt - 1
fl <- length(x)
y0 <- list()
for (i in 1:(fl-ed)) # Remove NA values
{
y0[[i]] <- Reduce("+", x[c(i:(i+ed))]) # RAW: Rolling Sum
}
# Data conversion
xx <- list()
for (z in 1:length(x))
{
xx[[z]] <- as.matrix(x[[z]]) # convert data to matrix
}
yy <- list()
for (f in 1:length(y0))
{
yy[[f]] <- as.matrix(y0[[f]]) # convert data to matrix
}
# ---------- ALGORITHM ---------- #
x1 <- list() # Error here
in1 <- list() # Error here
for (t in 1:27) # This is the length of yy
{
in1[t+1] <-
ifelse(x1[t] < 0, (
ifelse(yy[t] < 0, x1[t] + xx[t+5], 0)), (
ifelse(yy[t+1] >= 0, 0, (
ifelse(xx[t+5] >= 0, 0, xx[t+5])
))
)
)
x1[t+1] <- in1[t+1]
}