Schneider, Manuel
2005-Oct-20 14:01 UTC
[R] Attributing values to matrix according to names
Dear R-helpers Apologies for the basic question, but I just got stuck: I would like to write values from a vector into array cells with the same names> count[1:10]10010 10014 10015 10017 10030 10080 10100 10230 10250 10280 0 0 0 0 0 1 1 0 2 0>data[1:10,,1][,1] [,2] [,3] [,4] [,5] 10010 NA NA NA NA NA 10014 NA NA NA NA NA 10015 NA NA NA NA NA 10016 NA NA NA NA NA 10017 NA NA NA NA NA 10100 NA NA NA NA NA 10140 NA NA NA NA NA 10150 NA NA NA NA NA 10160 NA NA NA NA NA 10170 NA NA NA NA NA> length(count)[1] 2842> dim(data)[1] 4667 5 10 My operation should result in>data[1:10,,1][,1] [,2] [,3] [,4] [,5] 10010 0 NA NA NA NA 10014 0 NA NA NA NA 10015 0 NA NA NA NA 10016 NA NA NA NA NA 10017 0 NA NA NA NA 10100 1 NA NA NA NA 10140 NA NA NA NA NA 10150 NA NA NA NA NA 10160 NA NA NA NA NA 10170 NA NA NA NA NA> data["10014",1,1]<-count["10014"]works but> data["names(count)",1,1]<-count["names(count)"]Fails with Error: indexing outside limits. Many thanks for any help Manuel
"Schneider, Manuel" <Manuel.Schneider at eawag.ch> writes:> > data["10014",1,1]<-count["10014"] > works but > > > data["names(count)",1,1]<-count["names(count)"] > Fails with Error: indexing outside limits.Well, you don't have a row named "names(count)" now do you? Try dropping the quotes. -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
Schneider, Manuel wrote:> Dear R-helpers > > Apologies for the basic question, but I just got stuck: > > I would like to write values from a vector into array cells with the > same names > > >>count[1:10] > > 10010 10014 10015 10017 10030 10080 10100 10230 10250 10280 > 0 0 0 0 0 1 1 0 2 0 > > >>data[1:10,,1] > > [,1] [,2] [,3] [,4] [,5] > 10010 NA NA NA NA NA > 10014 NA NA NA NA NA > 10015 NA NA NA NA NA > 10016 NA NA NA NA NA > 10017 NA NA NA NA NA > 10100 NA NA NA NA NA > 10140 NA NA NA NA NA > 10150 NA NA NA NA NA > 10160 NA NA NA NA NA > 10170 NA NA NA NA NA > > >>length(count) > > [1] 2842 > > >>dim(data) > > [1] 4667 5 10 > > My operation should result in > > >>data[1:10,,1] > > [,1] [,2] [,3] [,4] [,5] > 10010 0 NA NA NA NA > 10014 0 NA NA NA NA > 10015 0 NA NA NA NA > 10016 NA NA NA NA NA > 10017 0 NA NA NA NA > 10100 1 NA NA NA NA > 10140 NA NA NA NA NA > 10150 NA NA NA NA NA > 10160 NA NA NA NA NA > 10170 NA NA NA NA NA > > >>data["10014",1,1]<-count["10014"] > > works but > > >>data["names(count)",1,1]<-count["names(count)"]You mean data[names(count),1,1] <- count[names(count)] without the quotes ... Uwe Ligges> Fails with Error: indexing outside limits. > > Many thanks for any help > > Manuel > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Schneider, Manuel
2005-Oct-20 15:07 UTC
[R] Attributing values to matrix according to names
Dear Peter and Uwe Thanks for your suggestions. However,> data[names(count),1,1] <- count[names(count)]Still gives the indexing problem, guess because not all element of count can be found in data. Found a way round this by> temp<-rep(NA, times=as.numeric(names(count[length(count)]))) > temp[as.numeric(names(count))]<-count > rwname<-rownames(data) > for (i in 1:dim(data)[1]) data[i,1,1]<-temp[as.numeric(rwname[i])]What works for me but I am convinced there is a far more elegant way. Kind regards Manuel -----Original Message----- From: pd at pubhealth.ku.dk [mailto:pd at pubhealth.ku.dk] On Behalf Of Peter Dalgaard Sent: Thursday, October 20, 2005 4:29 PM To: Schneider, Manuel Cc: r-help at stat.math.ethz.ch Subject: Re: [R] Attributing values to matrix according to names "Schneider, Manuel" <Manuel.Schneider at eawag.ch> writes:> > data["10014",1,1]<-count["10014"] > works but > > > data["names(count)",1,1]<-count["names(count)"] > Fails with Error: indexing outside limits.Well, you don't have a row named "names(count)" now do you? Try dropping the quotes. -- O__ ---- Peter Dalgaard ??ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907