[R] help assigning values to matrix
David
dasolexa at hotmail.com
Tue Apr 14 12:48:53 CEST 2015
Hi group,
I am automatically creating several matrices to store results from different analyses on vectors of different lengths. The matrices are named according to each vector, so I can trace back results. I am using the following commands, which give me an error. My idea is to populate the for loop to include several steps and keep adding results to the matrices. But to start with:
> ls()
[1] "PS013_1" "PS056_1" "PS058_1" "PS080_1" "PS117_1" "PS193_1" "PS194_1"
> mynames<- c("PS013","PS056","PS058","PS080","PS117","PS193","PS194")
> for (j in 1:length(mynames)) {
#create as many 13x3 matrices as vectors I have. The rowname of the last row will be the length of the vector
> assign(paste("results",mynames[j],"1",sep="_"),matrix(data=NA,nrow=13,ncol=3,dimnames = list(c(10,20,30,35,40,50,60,70,80,90,100,120,print(length(get(paste(mynames[j],1,sep="_"))))),c("col1","col2","col3"))))
# Example: assign three values in the last row of the created matrices
>assign(paste("results",mynames[j],"1",sep="_")[13,],c(3,4,5))
}
Error in paste("results", mynames[j], "1", sep = "_")[13, ] :
incorrect number of dimensions
I have noticed that to access the positions of a matrix I cannot use [row,column] coordinates, but actual "count" positions like:
#let's write something in one of the matrices, since they are all NAs
> results_PS013_1[1,]<-c(1,14,27)
> get(paste("results",mynames[1],"1",sep="_"))
col1 col2 col3
10 1 14 27
20 NA NA NA
30 NA NA NA
35 NA NA NA
40 NA NA NA
50 NA NA NA
60 NA NA NA
70 NA NA NA
80 NA NA NA
90 NA NA NA
100 NA NA NA
120 NA NA NA
295 NA NA NA
> get(paste("results",mynames[1],"1",sep="_"))[1]
[1] 1
> get(paste("results",mynames[1],"1",sep="_"))[2]
[1] NA
> get(paste("results",mynames[1],"1",sep="_"))[14]
[1] 14
> get(paste("results",mynames[1],"1",sep="_"))[c(1,14,27)]
[1] 1 14 27
So if I try to write three other values to the first row of the first matrix, I now try the following
> assign(get(paste("results",mynames[1],"1",sep="_"))[c(1,14,27)],c(3,4,5))
Error in assign(get(paste("results", mynames[1], "1", sep = "_"))[c(1, :
invalid first argument
Can anyone explain to me why I cannot assign the values in this way and how is it that I cannot use [row,column] coordinates?
Thanks in advance for your help
Dave
[[alternative HTML version deleted]]
More information about the R-help
mailing list