Bert (in his separate email) is right about learning the basics, and using 
R-sig-geo. You're kind of jumping right into the deep end! None the less, 
here's an example that should help.

For one thing, you're being more complicated than necessary. 
SpatialPointsDataFrame objects can, much of the time, be treated just like 
regular data frames. You don't need to extract the @data slot and operate on it.


## example with simple fake data
## for the example, I've decided on groups of three columns
## and 5 rows

set.seed(11198905)

## first, the coordinates and the single column that will be included every 
time.
sdf <- data.frame(long=runif(5, -121, -120),
                  lat=runif(5, 33, 34),
                  nm=letters[1:5])

## construct a set of data with 9 columns (3 sets of 3)
tmp <- matrix( round(runif(45, 10,20)), nrow=5)
colnames(tmp) <- paste0('v',1:9)
sdf <- cbind(sdf, tmp)

## make it into a SpatialPointsDataFrame
library(sp)
coordinates(sdf) <- c('long','lat')
plot(sdf)

## manually:
##   split into three separate SpatialPointsDataFrames, each with three data 
columns
s1 <- sdf[,c(1,2:4)]
s2 <- sdf[,c(1,5:7)]
s3 <- sdf[,c(1,8:10)]

## to use a loop, have to calculate which columns are needed each time through 
the loop
## (showing intermediate steps in more detail than truly necessary)

for (ic in 1:3) {

  ## calculate the column numbers
  col1 <- ic*3-1
  coln <- col1+2
  
  cat('iteration',ic,' selecting columns 1 and',col1,'through',coln,'\n')
  sic <- sdf[, c(1, col1:coln)]

  ## calculate the name of the new SpatialPointsDataFrame
  nmi <- paste0('sd',ic)
  cat('      assigning to ',nmi,'\n')

  ## write the current columns to .GlobalEnv
  assign( nmi, sic)

}

## now compare s1 with sd1, s2 with sd2, etc.
## they should be the same

## using assign() in this way is often recommended against. An alternative, 
which might be better depending on what you need to do with them, would be to 
save them as elements of a list object.

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509
 
 

On 10/5/18, 7:30 AM, "R-help on behalf of Ivy Pieters" 
<r-help-boun...@r-project.org on behalf of icwpiet...@gmail.com> wrote:

    Hey there,
    I am very much a newbie in the R world. I have to work with R for my 
internship. I really hope that someone can help me out here, since it costs me 
ages to run and adjust the same script over and over again. 
    
    I have a SpatialPointsDataFrame table (sent2field2@data) that I would like 
to split into different SpatialPointsDataFrame tables. The first table needs to 
consist out of [1:13] columns, the second table needs to consist of 
[,c(1,14:25)] the third needs to consist of [,c(1,26:37)]. The name of the 
tables need to be Sent2Field2_1, Sent2Field2_2, Sent2Field2_3, etc etc… So only 
1,2,3,4 etc need to change within the name. This loop needs to go on until 
there are no columns left anymore in the dataset. Then the next step needs to 
add coordinates to the table (see script below). The name of the tables need to 
be Sent2F2_1, Sent2F2_2, Sent2F2_3, etc etc… So only 1,2,3,4 etc need to change 
within the name. The last step projects the table with the added coordinates 
into a SpatialPointsDataFrame. See the script below: (up to now I am adjusting 
the names manually and running it time after time, i am getting crazy, but I 
really don’t know how to make a loop) For now the separate steps are working 
fine. I really hope someone can help me out. Looking forward to anyones reply. 
Thank you already in advance. 
    
    #field2
    Sent2Field2_1<-Sent2Field2@data[,1:13]
    Sent2F2_1<-cbind(CoordsSent2_F2,Sent2Field2_1)
    coordinates(Sent2F2_1) <- ~long+lat
    
    Sent2Field2_2<-Sent2Field2@data[,c(1,14:25)]
    Sent2F2_2<-cbind(CoordsSent2_F2,Sent2Field2_2)
    coordinates(Sent2F2_2) <- ~long+lat
    
    Sent2Field2_3<-Sent2Field2@data[,c(1,26:37)]
    Sent2F2_3<-cbind(CoordsSent2_F2,Sent2Field2_3)
    coordinates(Sent2F2_3) <- ~long+lat
    
    Sent2Field2_4<-Sent2Field2@data[,c(1,38:49)]
    Sent2F2_4<-cbind(CoordsSent2_F2,Sent2Field2_4)
    coordinates(Sent2F2_4) <- ~long+lat
    
    Sent2Field2_5<-Sent2Field2@data[,c(1,50:61)]
    Sent2F2_5<-cbind(CoordsSent2_F2,Sent2Field2_5)
    coordinates(Sent2F2_5) <- ~long+lat
    
    etc 
    etc
    
    
    
    
        [[alternative HTML version deleted]]
    
    ______________________________________________
    R-help@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.
    


______________________________________________
R-help@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.

Reply via email to