[R] Please help with a basic function
Paul Hiemstra
p.hiemstra at geo.uu.nl
Fri Dec 11 17:00:17 CET 2009
Hi Mark,
This question would probably be better suited for the r-sig-geo mailing
list. In addition, please read the posting guide and provide a piece of
code that reproduces the problem.
library(sp)
convert<-function(d) {
d<-data.frame(d); #convert object to dataframe
d<-subset(d,select=c(zinc,x,y)) #select some columns
d # <- add this, or alternatively 'return(d)'
}
data(meuse)
coordinates(meuse) = ~x+y
convert(meuse)
But maybe better, subsetting a SPDF can be done using:
meuse["zinc"] # Remains an SPDF
# Returns a data.frame
data.frame(coordinates(meuse), zinc = meuse$zinc)
And some unrequested advice :). To process multiple files, take a look
at lapply, both for reading and processing.
all_data = lapply(list_of_files, function(file) {
bla = read.table(file)
coordinates(bla) = ~coor.x1 + coor.x2
return(bla)
}
# all data is now a list wit the SPDF's
processed_data = lapply(all_data, function(dat) {
return(data.frame(coordinates(dat), zinc = dat$zinc))
}
ofcourse you can include the latter lapply stuff inside the first
'loading' lapply.
all_data = lapply(list_of_files, function(file) {
bla = read.table(file)
bla = subset(bla, select = select=c(time,coords.x1,coords.x2))
coordinates(bla) = ~coor.x1 + coor.x2
return(bla)
}
hope this helps and good luck,
Paul
Mark Na wrote:
> Hello,
>
> I am learning how to use functions, but I'm running into a roadblock.
>
> I would like my function to do two things: 1) convert an object to a
> dataframe, 2) and then subset the dataframe. Both of these commands work
> fine outside the function, but I would like to wrap them in a function so I
> can apply the code iteratively to many such objects.
>
> Here's what I wrote, but it doesn't work:
>
> convert<-function(d) {
> d<-data.frame(d); #convert object to dataframe
> d<-subset(d,select=c(time,coords.x1,coords.x2)) #select some columns
> }
> convert(data) #the problem is that "data" is the same as it was before
> running the function
>
> The objects being processed through my function are SpatialPointsDataFrames
> but I'm quite sure that's not my problem, as I can process these outside of
> the function (using the above code) ... it's when I try to wrap the code in
> a function that it doesn't work.
>
> Thanks, Mark
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>
--
Drs. Paul Hiemstra
Department of Physical Geography
Faculty of Geosciences
University of Utrecht
Heidelberglaan 2
P.O. Box 80.115
3508 TC Utrecht
Phone: +3130 274 3113 Mon-Tue
Phone: +3130 253 5773 Wed-Fri
http://intamap.geo.uu.nl/~paul
More information about the R-help
mailing list