[R-sig-Geo] Export subsets of Spatial Points Data Frame to images

Frede Aakmann Tøgersen frtog at vestas.com
Mon Jan 5 17:53:27 CET 2015


Hi Ariel

I cannot execute the for loop of your code. Can you execute the code?

Several things are wrong.

After splitting your sp object called on the date you now have df2 as a named list of sp objects with the names being the dates.

Here is your code:

for (i in df2) {  
  jpeg(paste(df2[[1]],".jpg",sep=""))
  bubble(df[i], "F_Up", col=c("#00ff0088", "#00ff0088"), 
         main = "df2" )
  dev.off()
}

You are trying to define a file name using paste() but it does not work:

>
> paste(df2[[1]],".jpg",sep="")
Error in as.character.default(<S4 object of class "SpatialPointsDataFrame">) : 
  no method for coercing this S4 class to a vector
>

Also in the loop you're always extracting the first element of df2. Is that what you want? 

Next you're trying to make a bubble plot but in the loop you're using the sp object df and not df2. Also R will complain over you subsetting an sp object using an sp object.

There are several ways to obtain what you want. I suggest that you loop over the names of the df2 list of sp objects:

> names(df2)
[1] "2015-01-01" "2015-01-02" "2015-01-03" "2015-01-04" "2015-01-05"
>

Since bubble() is based on the lattice package you will need to use print() on the lattice object created when using bubble() when inside a loop.

Now this I have tested and it works for me. 

for (i in names(df2)) {  
  jpeg(paste(i, ".jpg", sep="")) # i is the name of each element in df2
  print(bubble(df2[[i]], "F_Up", col=c("#00ff0088", "#00ff0088"),  main = "df2" )) # subsetting using i
  dev.off()
}


Yours sincerely / Med venlig hilsen


Frede Aakmann Tøgersen
Specialist, M.Sc., Ph.D.
Plant Performance & Modeling

Technology & Service Solutions
T +45 9730 5135
M +45 2547 6050
frtog at vestas.com
http://www.vestas.com

Company reg. name: Vestas Wind Systems A/S
This e-mail is subject to our e-mail disclaimer statement.
Please refer to www.vestas.com/legal/notice
If you have received this e-mail in error please contact the sender. 

From: Ariel Fuentesdi [mailto:ariel.fuentesdi at usach.cl] 
Sent: 5. januar 2015 16:44
To: Frede Aakmann Tøgersen
Cc: r-sig-geo at r-project.org
Subject: Re: [R-sig-Geo] Export subsets of Spatial Points Data Frame to images

Frede,

This is the reproducible example:

date <- seq(as.Date("2015/1/1"), as.Date("2015/1/5"), "days")
stops <- c("aa", "bb", "cc", "dd", "ee")
F_Up <-  c(1:10)[-seq(from = 4, to = 8, by = 1)] 
x <- c(342328.0, 342374.5, 342413.2, 342348.6, 342394.6)
y <-  c(6308284, 6308123, 6307915, 6307903, 6307915) 
df <- data.frame(date, stops, F_Up, x, y)


coordinates(df) <- ~ x + y 
proj4string(obj = df) <- CRS("+init=epsg:32719")

df2 <- split(df, f = df$date)

for (i in df2) {  
  jpeg(paste(df2[[1]],".jpg",sep=""))
  bubble(df[i], "F_Up", col=c("#00ff0088", "#00ff0088"), 
         main = "df2" )
  dev.off()
}


2015-01-05 3:22 GMT-04:00 Frede Aakmann Tøgersen <frtog at vestas.com>:
Hi Ariel

Please provide a reproducible example. Now I have to guess what the SB object is because you didn't provide any details about that.

I guess that the group_by() and summarise() are from the dplyr package.

I guess that when you have imported the csv file you have an object SB containing columns Fecha, CodPar, x, and y.

If so, your calls to the two dplyr functions are not correct. As first argument they need a data object, which is supposed to be of a tbl type like e.g. data frame.

Why didn't you get an error when issuing e.g. group_by(Fecha, CodPar, x, y) instead of group_by(SB, Fecha, CodPar, x, y)?

Yours sincerely / Med venlig hilsen


Frede Aakmann Tøgersen
Specialist, M.Sc., Ph.D.
Plant Performance & Modeling

Technology & Service Solutions
T +45 9730 5135
M +45 2547 6050
frtog at vestas.com
http://www.vestas.com

Company reg. name: Vestas Wind Systems A/S
This e-mail is subject to our e-mail disclaimer statement.
Please refer to www.vestas.com/legal/notice
If you have received this e-mail in error please contact the sender.

> -----Original Message-----
> From: R-sig-Geo [mailto:r-sig-geo-bounces at r-project.org] On Behalf Of Ariel
> Fuentesdi
> Sent: 5. januar 2015 04:48
> To: r-sig-geo at r-project.org
> Subject: [R-sig-Geo] Export subsets of Spatial Points Data Frame to images
>
> I have a csv file, which I converted it to Spatial Points Data Frame. And I
> want to split the spatial data and export each map to a jpg file.
>
>
> I did the following:
>
>     SB <- read.csv("SB_040914.csv", header=TRUE, sep = ";")
>     SB <- SB %>% group_by(Fecha, CodPar, x, y) %>%
> summarise(mean(Sube),mean(Evade), mean(Baja))
>     SB <- data.frame(SB)
>     SB <- SB[complete.cases(SB),]
>
>     coordinates(SB) <- ~ x + y
>     proj4string(obj = SB) <- CRS("+init=epsg:32719")
>
>     SB <- split(SB, f = SB$Fecha)
>
> The Split function, shows me the next warnings:
>
> **Warning messages:
> 1: In min(x) : no non-missing arguments to min; returning Inf
> 2: In max(x) : no non-missing arguments to max; returning -Inf
> 3: In min(x) : no non-missing arguments to min; returning Inf
> 4: In max(x) : no non-missing arguments to max; returning -Inf**
>
> And for trying to export I did this:
>
>     for (i in SB) {
>       jpeg(paste(SB[[1]],".jpg",sep=""))
>       bubble(SB[[i]], "mean.Evade.", col=c("#00ff0088", "#00ff0088"),
>              main = "Evasión" )
>       dev.off()
>     }
>
> **Which shows me the next error:
> Error in as.character.default(<S4 object of class
> "SpatialPointsDataFrame">) :
>   no method for coercing this S4 class to a vector
> 6 as.character.default(<S4 object of class
> structure("SpatialPointsDataFrame", package = "sp")>)
> 5 as.character(<S4 object of class structure("SpatialPointsDataFrame",
> package = "sp")>)
> 4 paste(SB[[1]], ".jpg", sep = "")
> 3 gsub("%%", "", s)
> 2 checkIntFormat(filename)
> 1 jpeg(paste(SB[[1]], ".jpg", sep = ""))**
>
>       [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list