[R] My very first loop!! I failed. May I have some start-up aid?

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Sat Aug 19 08:11:08 CEST 2017


Thank you for providing the example code... for the request of running it 
multiple times it would have helped if you could have confirmed that the 
example ran through without errors... there were a lot of mistakes in it. 
Look into using the reprex package to check your example next time.

I don't do this kind of analysis... I really don't know what to expect 
from the functions. The final step in your sequence produces a vector of 
sixteen values, not 1 value, nor 4 values, so I don't know how to obtain 
the 4x3 result you said you expected... I got 16x3.

myframe <- data.frame( ID = c( "Ernie", 
"Ernie","Ernie","Ernie","Ernie","Ernie")
                      , Timestamp = c( "24.09.2012 08:00", "24.09.2012 09:00"
                                     , "24.09.2012 10:00", "25.09.2012 10:00"
                                     , "26.09.2012 10:00", "27.09.2012 10:00"
                                     )
                      , Longitude = c( 8.481, 8.482, 8.483, 8.481, 8.483, 8.481 )
                      , Latitude = c( 54.753, 54.753, 54.752, 54.751, 54.752, 54.751 )
                      , stringsAsFactors = FALSE
                      )
myframe
#>      ID        Timestamp Longitude Latitude
#> 1 Ernie 24.09.2012 08:00     8.481   54.753
#> 2 Ernie 24.09.2012 09:00     8.482   54.753
#> 3 Ernie 24.09.2012 10:00     8.483   54.752
#> 4 Ernie 25.09.2012 10:00     8.481   54.751
#> 5 Ernie 26.09.2012 10:00     8.483   54.752
#> 6 Ernie 27.09.2012 10:00     8.481   54.751

# Now this is where my loop is supposed to start. In this example I want
#to run the following functions 3 times. (In real life more often.) How
#do I do that?

library(adehabitatHR)
#> Loading required package: sp
#> Loading required package: deldir
#> deldir 0.1-14
#> Loading required package: ade4
#> Loading required package: adehabitatMA
#> Loading required package: adehabitatLT
#> Loading required package: CircStats
#> Loading required package: MASS
#> Loading required package: boot
library(rgdal)
#> rgdal: version: 1.2-8, (SVN revision 663)
#>  Geospatial Data Abstraction Library extensions to R successfully loaded
#>  Loaded GDAL runtime: GDAL 1.11.3, released 2015/09/16
#>  Path to GDAL shared files: /usr/share/gdal/1.11
#>  Loaded PROJ.4 runtime: Rel. 4.9.2, 08 September 2015, [PJ_VERSION: 492]
#>  Path to PROJ.4 shared files: (autodetected)
#>  Linking to sp version: 1.2-5

myframe$mysampletime <- as.POSIXct( myframe$Timestamp
                                   , format = "%d.%m.%Y %H:%M"
                                   , tz="GMT"
                                   )

set.seed( 42 )
N <- 3
result <- matrix( NA, nrow = 16, ncol = N )
for ( i in seq.int( N ) ) {
   mysample <- myframe[ sample( seq_along( myframe[[ 1 ]] )
                              , 3
                              , replace=FALSE
                              )
                     ,
                     ]
   mysamplexy <- project( as.matrix( mysample[ , c( "Longitude"
                                                  , "Latitude"
                                                  )
                                             ]
                                   )
                        , "+proj=utm +zone=32 +ellps=WGS84"
                        )
   colnames( mysamplexy ) <- c( "xCord", "yCord" )
   datltraj <- as.ltraj( mysamplexy, mysample$mysampletime, id=mysample$ID )
   Ddat <- BRB.D( datltraj, Tmax=21600, Lmin=36 )
   BRBdat <- BRB( datltraj, D = Ddat, type = "UD", Tmax = 21600, Lmin = 36, hmin = 100 )
   result[ , i ] <- kernel.area( BRBdat, unout = "km2" )
}
#> Warning in kernel.area(BRBdat, unout = "km2"): The grid is too small to allow the estimation of home-range
#> for the following value of percent: 70,75,80,85,90,95. You should rerun kernelUD with a larger extent parameter
#> Warning in kernel.area(BRBdat, unout = "km2"): The grid is too small to allow the estimation of home-range
#> for the following value of percent: 30,35,40,45,50,55,60,65,70,75,80,85,90,95. You should rerun kernelUD with a larger extent parameter
#> Error in getvolumeUD(x, standardize = standardize): NA/NaN/Inf in foreign function call (arg 1)
result
#>             [,1]       [,2] [,3]
#>  [1,] 0.02271428 0.01841934   NA
#>  [2,] 0.02916494 0.02374206   NA
#>  [3,] 0.03599915 0.02943263   NA
#>  [4,] 0.04326174 0.03558258   NA
#>  [5,] 0.05102744 0.04230549   NA
#>  [6,] 0.05937594 0.04978273   NA
#>  [7,] 0.06842678 0.05844826   NA
#>  [8,] 0.07832443 0.06780540   NA
#>  [9,] 0.08940262 0.06780540   NA
#> [10,] 0.10219933 0.06780540   NA
#> [11,] 0.11765102 0.06780540   NA
#> [12,] 0.13991202 0.06780540   NA
#> [13,] 0.19924810 0.06780540   NA
#> [14,] 0.19924810 0.06780540   NA
#> [15,] 0.19924810 0.06780540   NA
#> [16,] 0.19924810 0.06780540   NA

  On Sat, 19 Aug 2017, Dagmar wrote:

> Dear all,
>
> I have a data similar to this:
>
> myframe<- data.frame (ID=c("Ernie", "Ernie","Ernie","Ernie"),
> Timestamp=c("24.09.2012 08:00", "24.09.2012 09:00", "24.09.2012 10:00",
> "25.09.2012 10:00"), Longitude=c("8.481","8.482","8.483","8.481"),
> Latitude=c("54.753","54.753","54.752","54.751")
> )
> myframe
>
> # Now this is where my loop is supposed to start. In this example I want to 
> run the following functions 3 times. (In real life more often.) How do I do 
> that?
>
> library(adehabitatHR)
> library(rgdal)
> mysample <- myframe[sample(1:nrow(myframe), 3,replace=FALSE),]
> mysample
> mysampletime <- as.POSIXct (strptime(as.character(mysample$Timestamp), 
> "%d.%m.%Y %H:%M"), tz="GMT")
> mysamplexy <- project (cbind (mysample$Longitude, mysample$Latitude), 
> "+proj=utm +zone=32 +ellps=WGS84")
> colnames(mysamplexy) <- c ("xCord", "yCord")
> ID <- mysample$ID
> datltraj <- as.ltraj(mysamplexy, mysampletime, id=ID)
> Ddat <- BRB.D(datltraj, Tmax=21600, Lmin=36)
> BRBdat <- BRB(datltraj, D= Ddat,type=c("UD"),Tmax=21600,Lmin=36, hmin=100)
> kernel.area(BRBdat, unout=c("km2"))
>
> # unfortunately my data are not a very good example. Sorry about that. But I 
> guess you know what I mean.
>
> # Because I wish to run the functions three times I do want a data frame (or 
> matrix) in the end, which includes the results (kernel areas): That means 12 
> columns and the three lines.
>
> # How do I do that?
>
> Many thanks in advance,
>
> Tagmarie
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k



More information about the R-help mailing list