On Mar 13, 2012, at 12:18 PM, Houhou Li wrote:
Hello, R-users,
I have a datafile with 37313 records and each record has 5 different
measurements on the same variables. The format looks like this:
treeID, VIG0, VIG1, VIG2, VIG3, VIG4
I was trying to convert the one row record to 5 rows record with
format like this (treeID, MEASUREMENT, VIGOR). My code like this:
treeMeas<-matrix(data=0,nrow=(length(tree1$indivTree)*5), ncol=3)
colnames(treeMeas)<-c("indivTree", "meas", "vigor")
for(i in 1:length(tree1$indivTree))
{
treeMeas[(i-1)*5+1:(i*5),1]<-tree1$indivTree[i]
You need to review operator precedence (and probably the R-FAQ where I
know that this is also reviewed):
(i-1)*5+1:(i*5) parses as ( 1-1*5) added to 1:(i*5)
> i=37313; length( (i-1)*5+1:(i*5))
[1] 186565
treeMeas[(i-1)*5+1:(i*5),2]<-c(0:4)
treeMeas[(i-1)*5+1:(i*5),3]<-c(tree1$VIG0[i], tree1$VIG1[i],
tree1$VIG2[i], tree1$VIG3[i], tree1$VIG4[i])
Wouldn't this be a whole lot easier with 'reshape' (the base
function)? 0r 'melt' from either reshape package or reshape2 package?
--
David
}
When I run the code, I always got error message like this " Error in
treeMeas[(i - 1) * 5 + 1:(i * 5), 1] <- tree1$indivTree[i] :
subscript out of bounds". I couldn't figure out why subscript out of
bounds. Is this because the matrix is too big (186565 by 3)? Any one
can help? Thank you very much.
Yuzhen
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
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.
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
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.