On Fri, Aug 3, 2012 at 5:10 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
This runs, so there must be something else going on that you haven't
told us about.
diveCond <- structure(list(dive_id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
timestamp = c("2008-08-06 08:49:00",
"2008-08-06 10:03:00", "2008-08-06 10:25:00", "2008-08-08 09:42:00",
"2008-08-08 10:53:00", "2008-08-08 12:42:00", "2008-08-11 10:10:00",
"2008-08-11 11:01:00", "2008-08-11 11:16:00", "2008-08-11 14:12:00"
), visability = c(3.5, 3.5, NA, 4, NA, NA, NA, 7, 6.5, NA), r_wvht = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), r_dpd = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), r_apt = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), r_mwd = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), r_wtmp = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), l_salinity = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_o2 = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_hs = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), l_tp = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_wdir = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_along = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0), l_cross = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_mab = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_depth = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0)), .Names = c("dive_id", "timestamp", "visability", "r_wvht",
"r_dpd", "r_apt", "r_mwd", "r_wtmp", "l_salinity", "l_o2", "l_hs",
"l_tp", "l_wdir", "l_along", "l_cross", "l_mab", "l_depth"), row.names =
c(NA,
10L), class = "data.frame")
regCond_all <-
structure(c(999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 1.9, 2, 1.97, 1.99, 1.83, 1.78, 1.6, 1.52, 1.52,
1.36, 10.53, 9.88, 9.88, 10.53, 10.53, 10.53, 5.26, 9.88, 10.53,
10.53, 5.4, 5.57, 5.46, 5.34, 5.5, 5.59, 5.62, 5.76, 6.23, 6.19,
295, 294, 292, 294, 283, 288, 305, 287, 294, 295, 9999, 9999,
9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 999, 999, 999,
999, 999, 999, 999, 999, 999, 999, 12.7, 12.5, 12.3, 12.6, 12.6,
12.5, 12.5, 12.5, 12.7, 12.7, 999, 999, 999, 999, 999, 999, 999,
999, 999, 999, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99), class = c("xts", "zoo"), .indexCLASS
= c("POSIXct",
"POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "",
index = structure(c(1217564520,
1217566320, 1217568120, 1217569980, 1217571720, 1217573520, 1217575320,
1217577120, 1217578920, 1217580720), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(10L, 13L), .Dimnames = list(NULL, c("WDIR",
"WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP",
"DEWP", "VIS", "TIDE")))
for(i in 1:dim(diveCond)[1]){
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[i], "%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[i]<- regCond_all$WVHT[ind]
diveCond$r_dpd[i]<- regCond_all$DPD[ind]
diveCond$r_apt[i] <- regCond_all$APD[ind]
diveCond$r_mwd[i] <- regCond_all$MWD[ind]
diveCond$r_wtmp[i] <- regCond_all$WTMP[ind]
}
# this also runs
i <- 10
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[i], "%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[i]<- regCond_all$WVHT[ind]
diveCond$r_dpd[i]<- regCond_all$DPD[ind]
diveCond$r_apt[i] <- regCond_all$APD[ind]
diveCond$r_mwd[i] <- regCond_all$MWD[ind]
diveCond$r_wtmp[i] <- regCond_all$WTMP[ind]
What happens when you do:
i <- 10
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[i], "%Y-%m-%d
%H:%M:%S"))
thisStamp
ind <- which.min( abs(index(regCond_all) - thisStamp ))
ind
diveCond$r_wvht[i]
regCond_all$WVHT[ind]
On Fri, Aug 3, 2012 at 5:02 PM, Yolande Tra <yolande.tra at gmail.com> wrote:
structure(list(dive_id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), timestamp =
c("2008-08-06 08:49:00",
"2008-08-06 10:03:00", "2008-08-06 10:25:00", "2008-08-08 09:42:00",
"2008-08-08 10:53:00", "2008-08-08 12:42:00", "2008-08-11 10:10:00",
"2008-08-11 11:01:00", "2008-08-11 11:16:00", "2008-08-11 14:12:00"
), visability = c(3.5, 3.5, NA, 4, NA, NA, NA, 7, 6.5, NA), r_wvht =
c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), r_dpd = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), r_apt = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), r_mwd = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), r_wtmp = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), l_salinity = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_o2 = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_hs = c(0, 0, 0, 0, 0, 0, 0, 0,
0, 0), l_tp = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_wdir = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_along = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0), l_cross = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), l_mab = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0), l_depth = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0)), .Names = c("dive_id", "timestamp", "visability", "r_wvht",
"r_dpd", "r_apt", "r_mwd", "r_wtmp", "l_salinity", "l_o2", "l_hs",
"l_tp", "l_wdir", "l_along", "l_cross", "l_mab", "l_depth"), row.names =
c(NA,
10L), class = "data.frame")
dput(head(regCond_all, 10))
structure(c(999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 1.9, 2, 1.97, 1.99, 1.83, 1.78, 1.6, 1.52, 1.52,
1.36, 10.53, 9.88, 9.88, 10.53, 10.53, 10.53, 5.26, 9.88, 10.53,
10.53, 5.4, 5.57, 5.46, 5.34, 5.5, 5.59, 5.62, 5.76, 6.23, 6.19,
295, 294, 292, 294, 283, 288, 305, 287, 294, 295, 9999, 9999,
9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 999, 999, 999,
999, 999, 999, 999, 999, 999, 999, 12.7, 12.5, 12.3, 12.6, 12.6,
12.5, 12.5, 12.5, 12.7, 12.7, 999, 999, 999, 999, 999, 999, 999,
999, 999, 999, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99), class = c("xts", "zoo"), .indexCLASS =
c("POSIXct",
"POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "",
index
= structure(c(1217564520,
1217566320, 1217568120, 1217569980, 1217571720, 1217573520, 1217575320,
1217577120, 1217578920, 1217580720), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(10L, 13L), .Dimnames = list(NULL, c("WDIR",
"WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP", "WTMP",
"DEWP", "VIS", "TIDE")))
Thank you for your patience.
Y
On Fri, Aug 3, 2012 at 4:56 PM, Sarah Goslee <sarah.goslee at gmail.com>
wrote:
When i == 10, what is ind?
diveCond$r_apt[10]
regCond_all$APD[ind]
Providing a subset is unhelpful. I gave you explicit dput() code to
use; that's how we need data to be provided.
I've given you various suggestions; if you don't implement them then
there's not much point in me trying to help.
Sarah
On Fri, Aug 3, 2012 at 4:54 PM, Yolande Tra <yolande.tra at gmail.com>
wrote:
I have tried 1 and 2. Then for i=10, the error came back
i=1
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[1], "%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[1]<- regCond_all$WVHT[ind]
diveCond$r_dpd[1]<- regCond_all$DPD[ind]
diveCond$r_apt[1] <- regCond_all$APD[ind]
diveCond$r_mwd[1] <- regCond_all$MWD[ind]
diveCond$r_wtmp[1] <- regCond_all$WTMP[ind]
i=2
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[2], "%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[2]<- regCond_all$WVHT[ind]
diveCond$r_dpd[2]<- regCond_all$DPD[ind]
diveCond$r_apt[2] <- regCond_all$APD[ind]
diveCond$r_mwd[2] <- regCond_all$MWD[ind]
diveCond$r_wtmp[2] <- regCond_all$WTMP[ind]
i=10
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[10], "%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[10]<- regCond_all$WVHT[ind]
Error in diveCond$r_wvht[10] <- regCond_all$WVHT[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
diveCond$r_dpd[10]<- regCond_all$DPD[ind]
Error in diveCond$r_dpd[10] <- regCond_all$DPD[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
diveCond$r_apt[10] <- regCond_all$APD[ind]
Error in diveCond$r_apt[10] <- regCond_all$APD[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
diveCond$r_mwd[10] <- regCond_all$MWD[ind]
Error in diveCond$r_mwd[10] <- regCond_all$MWD[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
Here is a subset of the data
u=regCond_all
u1<-data.frame(date=index(u),coredata(u))
subset(u1,WVHT<0.61)
date WDIR WSPD GST WVHT DPD APD MWD PRES ATMP
WTMP
DEWP
408 2008-08-09 12:52:00 999 99 99 0.59 12.50 5.52 247 9999 999
12.8
999
409 2008-08-09 13:22:00 999 99 99 0.60 11.76 5.42 239 9999 999
12.8
999
950 2008-08-20 22:22:00 999 99 99 0.57 15.38 5.93 208 9999 999
15.9
999
2689 2009-10-11 05:33:00 999 99 99 0.59 11.11 6.29 256 9999 999
12.6
999
2691 2009-10-11 06:33:00 999 99 99 0.60 10.53 6.84 278 9999 999
12.7
999
2717 2009-10-11 19:33:00 999 99 99 0.60 10.53 5.28 273 9999 999
12.8
999
2724 2009-10-11 23:03:00 999 99 99 0.60 11.11 5.97 252 9999 999
13.2
999
2726 2009-10-12 00:03:00 999 99 99 0.60 10.53 6.08 252 9999 999
13.2
999
2727 2009-10-12 00:33:00 999 99 99 0.60 9.88 5.61 276 9999 999
13.2
999
2731 2009-10-12 02:33:00 999 99 99 0.57 18.18 6.57 249 9999 999
13.2
999
2732 2009-10-12 03:03:00 999 99 99 0.58 8.33 6.66 304 9999 999
13.2
999
2733 2009-10-12 03:33:00 999 99 99 0.59 7.14 6.80 288 9999 999
13.2
999
VIS TIDE
408 99 99
409 99 99
950 99 99
2689 99 99
2691 99 99
2717 99 99
2724 99 99
2726 99 99
2727 99 99
2731 99 99
2732 99 99
2733 99 99
Thanks,
Y
On Fri, Aug 3, 2012 at 4:35 PM, Sarah Goslee <sarah.goslee at gmail.com>
wrote:
Yolande,
Please send your message to the R-help email list too, not just to
me.
On Fri, Aug 3, 2012 at 4:28 PM, Yolande Tra <yolande.tra at gmail.com>
wrote:
Here is the description
I am trying to build the data diveCond from two datasets
diveData_2008,
diveData_2009 and RegCond_all. How would I dput each data for
anyone
who
helps why the code is giving error. The code selects index i of
the
data
The code starts like this
diveCond <- data.frame(matrix(0, nrow=97, ncol=17))
names(diveCond) <- c("dive_id", "timestamp", "visability",
"r_wvht",
"r_dpd", "r_apt", "r_mwd", "r_wtmp", "l_salinity", "l_o2", "l_hs",
"l_tp",
"l_wdir", "l_along", "l_cross", "l_mab", "l_depth")
dive_id <- 0
for(i in unique(as.character(index(diveData_2008)))){
dive_id <- dive_id+1
diveCond$dive_id[dive_id] <- dive_id
diveCond$timestamp[dive_id] <- as.character(i)
diveCond$visability[dive_id] <-
as.numeric(diveData_2008[i][1,12])
}
for(i in unique(as.character(index(diveData_2009)))){
dive_id <- dive_id+1
diveCond$dive_id[dive_id] <- dive_id
diveCond$timestamp[dive_id] <- as.character(i)
diveCond$visability[dive_id] <- as.numeric(diveData_2009[i][1,5])
}
Which has nothing whatsoever in common with the "reproducible" code
you provided originally, since that only creates diveCond full of
zeros and tries to use it, without success.
You need to give us actual data for all data frames involved, as you
did for just the one, eg.
dput(head(diveCond, 10))
dput(head(regCond_all))
otherwise we can't run your code and see what happens.
But failing that, here's how to diagnose it yourself. Set i <- 1 and
then run the first few lines of your loop. Look at ind and see if
it's
what you think it should be. Look at diveCond$r_wvht[i] and
regCond_all$WVHT[ind] to see if they exist and are the same size.
I'm guessing that ind isn't what you expect, but there's no way I
can
be certain from what you've given us.
Sarah
I id not get error so far. Then
for(i in 1:dim(diveCond)[1]){
+ thisStamp <- as.POSIXct(strptime(diveCond$timestamp[i],
"%Y-%m-%d
%H:%M:%S"))
+ ind <- which.min( abs(index(regCond_all) - thisStamp ))
+ diveCond$r_wvht[i]<- regCond_all$WVHT[ind]
+ diveCond$r_dpd[i]<- regCond_all$DPD[ind]
+ diveCond$r_apt[i] <- regCond_all$APD[ind]
+ diveCond$r_mwd[i] <- regCond_all$MWD[ind]
+ diveCond$r_wtmp[i] <- regCond_all$WTMP[ind]
+ }
Error in diveCond$r_wvht[i] <- regCond_all$WVHT[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
Thank you for your time
Y
On Fri, Aug 3, 2012 at 4:02 PM, Sarah Goslee
<sarah.goslee at gmail.com>
wrote:
Hi Yolande,
What's index() ?
I get
ind <- which.min( abs(index(regCond_all) - thisStamp ))
Error in which.min(abs(index(regCond_all) - thisStamp)) :
could not find function "index"
There's probably an easier way to do whatever you're trying to
accomplish, but I'm afraid I can't tell what that is from just
your
code, especially without being able to figure out how ind is
calculated. Can you describe what you want to do and what the
result
should look like when run with the first 10 rows of your data, as
you
provided with dput()?
Sarah
On Fri, Aug 3, 2012 at 3:49 PM, Yolande Tra
<yolande.tra at gmail.com>
wrote:
Hi,
Here is my data, the first 10 rows
> u=regCond_all[1:10,]
dput(u)
structure(c(999, 999, 999, 999, 999, 999, 999, 999, 999, 999,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 1.9, 2, 1.97, 1.99, 1.83, 1.78, 1.6, 1.52,
1.52,
1.36, 10.53, 9.88, 9.88, 10.53, 10.53, 10.53, 5.26, 9.88,
10.53,
10.53, 5.4, 5.57, 5.46, 5.34, 5.5, 5.59, 5.62, 5.76, 6.23,
6.19,
295, 294, 292, 294, 283, 288, 305, 287, 294, 295, 9999, 9999,
9999, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 999, 999, 999,
999, 999, 999, 999, 999, 999, 999, 12.7, 12.5, 12.3, 12.6,
12.6,
12.5, 12.5, 12.5, 12.7, 12.7, 999, 999, 999, 999, 999, 999,
999,
999, 999, 999, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99), class = c("xts", "zoo"),
.indexCLASS
=
c("POSIXct",
"POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"),
tzone =
"",
index = structure(c(1217564520,
1217566320, 1217568120, 1217569980, 1217571720, 1217573520,
1217575320,
1217577120, 1217578920, 1217580720), tzone = "", tclass =
c("POSIXct",
"POSIXt")), .Dim = c(10L, 13L), .Dimnames = list(NULL,
c("WDIR",
"WSPD", "GST", "WVHT", "DPD", "APD", "MWD", "PRES", "ATMP",
"WTMP",
"DEWP", "VIS", "TIDE")))
I tried to copy some fields from this data to another data. I
got
error.
Could you please help? Thanks.
diveCond <- data.frame(matrix(0, nrow=97, ncol=17))
names(diveCond) <- c("dive_id", "timestamp", "visability",
"r_wvht",
"r_dpd", "r_apt", "r_mwd", "r_wtmp", "l_salinity", "l_o2",
"l_hs",
"l_tp",
"l_wdir", "l_along", "l_cross", "l_mab", "l_depth")
dive_id <- 0
for(i in 1:dim(diveCond)[1]){
thisStamp <- as.POSIXct(strptime(diveCond$timestamp[i],
"%Y-%m-%d
%H:%M:%S"))
ind <- which.min( abs(index(regCond_all) - thisStamp ))
diveCond$r_wvht[i] <- regCond_all$WVHT[ind]
diveCond$r_dpd[i] <- regCond_all$DPD[ind]
diveCond$r_apt[i] <- regCond_all$APD[ind]
diveCond$r_mwd[i] <- regCond_all$MWD[ind]
diveCond$r_wtmp[i] <- regCond_all$WTMP[ind]
}
Error in diveCond$r_wvht[i] <- regCond_all$WVHT[ind] :
replacement has length zero
In addition: Warning message:
In max(i) : no non-missing arguments to max; returning -Inf
If you could explain the error that would help prevent future
errors.
Thanks,
Y