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....@gmail.com> wrote: >> dput(head(diveCond, 10)) > 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.gos...@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....@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.gos...@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....@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.gos...@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....@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 >> >> >> >> -- Sarah Goslee http://www.functionaldiversity.org ______________________________________________ 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.