[R] (list) object cannot be coerced to type 'double'
    Muhammad Rahiz 
    muhammad.rahiz at ouce.ox.ac.uk
       
    Tue Jan 26 17:42:54 CET 2010
    
    
  
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]               
}
    
    
More information about the R-help
mailing list