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]]
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.