kloytyno at mappi.helsinki.fi
2010-Mar-05 14:24 UTC
[R] Error in inherits(x, "data.frame") : subscript out of bounds
Hi,
I have a list p with different size dataframes and length of over
8000. I'm trying to
calculate correlations between the rows of dataframes of this list and
columns of another
dataset (type data.frame also) so that first column is correlated with
all the rows in
the list dataframe. Some information from another dataset is also
included to the final
output (all.corrs). This worked a couple of weeks ago when I wrote it
but now it seems
not to, and gives an error message:
Error in inherits(x, "data.frame") : subscript out of bounds
In addition: There were 50 or more warnings (use warnings() to see the
first 50)
warnings()
Warning messages: 1: In corrs[j] <- cbind(expressions[j, 1:5], SNP.expr.cor)
:
number of items to replace is not a multiple of replacement length
which indicates that the problem is with getting correlation and other
information into
corrs. cbind(expressions[j,1:5], SNP.expr.cor) is type data.frame.
Changing corrs into
matrix, dataframe, list or any other type has not helped.
I've updated R from 2.9.0 to the recent version in between. Would
anyone have a solution
for this problem? I very much appreciate all help.
SNP.expr.cor<-NULL
all.corrs<-NULL
corrs<-NULL
for(i in 1:length(p)){
dim.exp<-dim(p[[i]])
expressions<-p[[i]]
expressions.m<-as.matrix(expressions[,6:48])
for(j in
1:dim.exp[1]){
SNP.expr.cor<-cor(genotypes[,i],expressions.m[j,],use="na.or.complete")
corrs[j]<-cbind(expressions[j,1:5], SNP.expr.cor)
}
all.corrs[i]<-list(cbind(map[i,1:6], corrs))
}
BR
Katja
--
Katja L?ytynoja, FM
Haartman Institute
Department of Medical Genetics
Biomedicum Helsinki
P.O.Box 63
FIN-00014 University of Helsinki
tel +358-9-19125496
gsm +358-50-4000324
fax +358-9-19125624
e-mail katja.loytynoja at helsinki.fi
Uwe Ligges
2010-Mar-07 18:45 UTC
[R] Error in inherits(x, "data.frame") : subscript out of bounds
On 05.03.2010 15:24, kloytyno at mappi.helsinki.fi wrote:> Hi, > I have a list p with different size dataframes and length of over 8000. > I'm trying to > calculate correlations between the rows of dataframes of this list and > columns of another > dataset (type data.frame also) so that first column is correlated with > all the rows in > the list dataframe. Some information from another dataset is also > included to the final > output (all.corrs). This worked a couple of weeks ago when I wrote it > but now it seems > not to, and gives an error message: > > Error in inherits(x, "data.frame") : subscript out of bounds > In addition: There were 50 or more warnings (use warnings() to see the > first 50) > warnings() > Warning messages: 1: In corrs[j] <- cbind(expressions[j, 1:5], > SNP.expr.cor) : > number of items to replace is not a multiple of replacement length > > which indicates that the problem is with getting correlation and other > information into > corrs. cbind(expressions[j,1:5], SNP.expr.cor) is type data.frame. > Changing corrs into > matrix, dataframe, list or any other type has not helped. > > I've updated R from 2.9.0 to the recent version in between. Would anyone > have a solution > for this problem? I very much appreciate all help. > > SNP.expr.cor<-NULL > all.corrs<-NULL > corrs<-NULL > > for(i in 1:length(p)){ > dim.exp<-dim(p[[i]]) > expressions<-p[[i]] > expressions.m<-as.matrix(expressions[,6:48]) > for(j in > 1:dim.exp[1]){ > SNP.expr.cor<-cor(genotypes[,i],expressions.m[j,],use="na.or.complete") > corrs[j]<-cbind(expressions[j,1:5], SNP.expr.cor) > } > all.corrs[i]<-list(cbind(map[i,1:6], corrs)) > } > > > BR > Katja >Your example is not reproducible, since we do not have the data. What I guess is that you need to make your objects lists in advance. I cannot try out, but maybe the following works better right away all.corrs <- vector(mode = "list", length = length(p)) for(i in seq(along = p)){ dim.exp <- dim(p[[i]]) corrs <- vector(mode = "list", length = dim.exp[1]) expressions <- p[[i]] expressions.m <- as.matrix(expressions[,6:48]) for(j in 1:dim.exp[1]){ SNP.expr.cor <- cor(genotypes[, i], expressions.m[j, ], use = "na.or.complete") corrs[[j]] <- cbind(expressions[j, 1:5], SNP.expr.cor) } all.corrs[[i]] <- list(cbind(map[i, 1:6]), corrs) } Best, Uwe Ligges