Hi Yolande,
For your first error regaring factor, I am getting a single number
thisIndex <- as.character(index(diveData_2008[2,]))> dive_id <- diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
> dive_id
[1] 1
#because there is only one TRUE value below and that refers to dive_id 1.
diveCond_all$dive_id
?[1]? 1? 2? 3? 4? 5? 6? 7? 8? 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
[51] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
[76] 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
97> diveCond_all$timestamp==thisIndex
?[1]? TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[97] FALSE
#Here I am using only diveData_2008
N <- dim(diveData_2008)[1]
#Here I found a mistake.? I guess the ncol should be 10 instead of 9.? Also,
names(fishReport)? has 9 columns where it should be 10 because in the loop 2008,
it has 10 columns to be replaced.? I might be wrong as I am a bit busy heading
towards home.? Will look into it later.
fishReport <- data.frame(matrix(0, nrow=N, ncol=10))
names(fishReport) <- c("dive_id", "site",
"section", "level", "transect", "depth",
"species", "count", "size","visibility")
#Now the loop part is a bit baffling.?
## The 2008 dives
#Here, dive_id has 97 elements.? It should be replaced by fishReport$dive_id[i]
containing 674 elements.? I guess that is where the error shows.? So, I am just
commenting that line #and running.? It shows no errors.?
for(i in 1:dim(diveData_2008)[1]){
??????????????? # Which dive is this observation from
??????????????? thisIndex <- as.character(index(diveData_2008[i,]))
??????????????? dive_id <-
diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
??????????????? cat(dive_id, thisIndex, "\n")
??????????????? # Store the pertinent data in the fish report data.frame
??????????????? #fishReport$dive_id[i] ??? <- dive_id
??????????????? fishReport$site[i]?????? <- diveData_2008[i,"site"]
??????????????? fishReport$level[i]???? <- diveData_2008[i,"level"]
??????????????? fishReport$section[i]???? <- 0
??????????????? fishReport$transect[i]?? <-
as.numeric(diveData_2008[i,"TRANSECT"])
??????????????? fishReport$depth[i]?????? <-
as.numeric(diveData_2008[i,"depth"])
???????????????
fishReport$species[i]???? <-
fishTable$name_2009[fishTable$name_2008==as.character(diveData_2008[i,"species"])
][1]
??????????????? fishReport$count[i]?????? <-
as.numeric(diveData_2008[i,"count"])
??????????????? fishReport$size[i]?????? <-
as.numeric(diveData_2008[i,"size"])
????? fishReport$visibility[i]???????? <-
as.numeric(diveData_2008[i,"VIS_M"])
}
?head(fishReport)
? dive_id??? site section level transect depth species count size visibility
1?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA??? 15??? 6??????? 3.5
2?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA???? 1?? 23??????? 3.5
3?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA???? 1?? 27??????? 3.5
4?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA???? 1?? 29??????? 3.5
5?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA???? 1??? 8??????? 3.5
6?????? 1 Hopkins?????? 0???? B??????? 1??? 15????? NA???? 1??? 8???????
3.5>
tail(fishReport)
??? dive_id??????? site section level transect depth species count size
669?????? 0 Point Pinos?????? 0???? B??????? 1??? 15????? NA???? 2?? 30
670?????? 0 Point Pinos?????? 0???? B??????? 1??? 15????? NA???? 1??? 7
671?????? 0 Point Pinos?????? 0???? B??????? 1??? 15????? NA???? 1??? 8
672?????? 0 Point Pinos?????? 0???? M??????? 1??? 15????? NA???? 1?? 18
673?????? 0 Point Pinos?????? 0???? B??????? 2??? 10????? NA???? 1?? 42
674?????? 0 Point Pinos?????? 0???? M??????? 2??? 10????? NA??? NA?? NA
??? visibility
669??????? 3.0
670??????? 3.0
671??????? 3.0
672??????? 3.0
673??????? 2.5
674??????? 2.5
Still has to sort out the dive_id.
WIll check it later.
I am copying this to Rhelp.? Probably somebody else will find the errors better
than me.
A.K.
________________________________
From: Yolande Tra <yolande.tra at gmail.com>
To: arun <smartpink111 at yahoo.com>
Sent: Tuesday, July 17, 2012 5:23 PM
Subject: need help please
Hi Arun,
I am still impressed by the way you solved my questions. I?have a last one.
Please bear with me. Attached are?four files used in the following codes.?There
are two parts in the code.
First part
I pickedup i=2 for the code
thisIndex <- as.character(index(diveData_2008[i,]))
> thisIndex <- as.character(index(diveData_2008[2,]))
> dive_id <- diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
> dive_id
factor(0)
97 Levels:? 1? 2? 3? 4? 5? 6? 7? 8? 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
97
It gives a factor instead of a single number: dive_id
dive_id <- diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
cat(dive_id, thisIndex, "\n")
fishReport$dive_id[i] ??? <- dive_id
The program at the end of part 1 says
2008-08-06 08:49:00
Error in fishReport$dive_id[i] <- dive_id : replacement has length zero
Second part
It?gives the same type of error around dive_id
?2009-10-12 12:44:00
Error in fishReport$dive_id[i + j] <- dive_id :
? replacement has length zero
N <- dim(diveData_2009)[1] + dim(diveData_2008)[1]
fishReport <- data.frame(matrix(0, nrow=N, ncol=9))
names(fishReport) <- c("dive_id", "site",
"section", "level", "transect", "depth",
"species", "count", "size")
## The 2008 dives
for(i in 1:dim(diveData_2008)[1]){
??????????????? # Which dive is this observation from
??????????????? thisIndex <- as.character(index(diveData_2008[i,]))
??????????????? dive_id <-
diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
??????????????? cat(dive_id, thisIndex, "\n")
??????????????? # Store the pertinent data in the fish report data.frame
??????????????? fishReport$dive_id[i] ??? <- dive_id
??????????????? fishReport$site[i]???????????????????????????? <-
diveData_2008[i,"site"]
??????????????? fishReport$level[i]????????????????????????? <-
diveData_2008[i,"level"]
??????????????? fishReport$section[i]???? <- 0
??????????????? fishReport$transect[i]?? <-
as.numeric(diveData_2008[i,"TRANSECT"])
??????????????? fishReport$depth[i]??????????????????????? <-
as.numeric(diveData_2008[i,"depth"])
??????????????? fishReport$species[i]???? <-
fishTable$name_2009[fishTable$name_2008==as.character(diveData_2008[i,"species"])
][1]
??????????????? fishReport$count[i]??????????????????????? <-
as.numeric(diveData_2008[i,"count"])
??????????????? fishReport$size[i]??????????????????????????? <-
as.numeric(diveData_2008[i,"size"])
????? fishReport$visibility[i]????????????????????????????? <-
as.numeric(diveData_2008[i,"VIS_M"])
}
j<-i
## The 2009 dives
for(i in i+1:dim(diveData_2009)[1]){
??????????????? thisIndex <- as.character(index(diveData_2009[i,]))
??????????????? dive_id <-
diveCond_all$dive_id[diveCond_all$timestamp==thisIndex]
??????????????? cat(dive_id, thisIndex, "\n")??????
??????????????? fishReport$dive_id[i+j] ??????????????? <- dive_id
??????????????? fishReport$site[i+j]???????????????????????? <-
"Hopkins"
??????????????? fishReport$level[i+j]????????????????????? <-
diveData_2009[i,"level"]
??????????????? fishReport$transect[i+j]?????????????? <-
as.numeric(diveData_2009[i,"TRANSECT"])
??????????????? fishReport$depth[i+j]??????????????????????????????????? <-
as.numeric(diveData_2009[i,"depth"])
??????????????? fishReport$species[i+j]???????????????? <-
diveData_2009[i,"species"]
??????????????? fishReport$count[i+j]??????????????????? <-
as.numeric(diveData_2008[i,"count"])
??????????????? fishReport$size[i+j]??????????????????????? <-
as.numeric(diveData_2009[i,"size"])
????? fishReport$visibility[i+j]????? <-
as.numeric(diveData_2008[i,"VIS_M"])
??????????????? }
Thank you,
Yolande?????????