Lanna -
Here's one way:
makeframe = function(x){
b = as.data.frame(as.matrix(table(x$Species,x$Species)))
b = b[!(b$Var1 == b$Var2),-3]
data.frame(Year=x$Year[1],Location=x$Location[1],b)
}
result = lapply(split(x,list(x$Year,x$Location)),makeframe)
result will be a list of data frames, one for each
Year/Location combination. You can find the data frame
for a particular Year/Location combination as
Year = 1998
Location = 'PIPE_7'
result[[paste(Year,Location,sep='.')]]
Hope this helps.
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spec...@stat.berkeley.edu
On Tue, 16 Mar 2010, Lanna Jin wrote:
Hey All,
So, I am confused how exactly to use nesting loop functions in R to spit out
data frames. I've managed to create a working function for my data set that
generates a data frame for a given set of Year i and Location j; but how
would I do it for all Years and Locations?
Here is my working function:
test<-function(i,j){
a<-x[which(x$Year==i & x$Location==j),]
b<-as.data.frame(as.matrix(table(a$Species,a$Species)))
c<-b[-which(b$Var1==b$Var2),-3]
c$Year<-i; c$Location<-j
return(c)
}
Where, x is a dataframe that looks like the following:
head(x,n=20)
Year Location Species
66 1998 PIPE_7 ACMI2
67 1998 PIPE_7 AMAR2
68 1998 PIPE_7 AMCA6
69 1998 PIPE_7 ANCY
70 1998 PIPE_7 ASVE
71 1998 PIPE_7 BOCU
72 1998 PIPE_7 CIFL
73 1998 PIPE_7 DAPU5
74 1998 PIPE_7 DICHANTHEL
75 1998 PIPE_7 GABO2
76 1998 PIPE_7 HEHE5
77 1998 PIPE_7 LIAS
78 1998 PIPE_7 LIPY
79 1998 PIPE_7 PAVI2
80 1998 PIPE_7 PHPI
81 1998 PIPE_7 PHVI5
82 1998 PIPE_7 RAPI
83 1998 PIPE_7 SOCA6
84 1998 PIPE_7 VIPE2
85 1998 PIPE_7 ZIAU
and when feeding x into my function "test" with the parameters i = 1998 and
j = "PIPE_7", I get the following dataframe, c:
head(test(1998,"PIPE_7"),n=20)
Var1 Var2 Year Location
2 AMAR2 ACMI2 1998 PIPE_7
3 AMCA6 ACMI2 1998 PIPE_7
4 ANCY ACMI2 1998 PIPE_7
5 ASVE ACMI2 1998 PIPE_7
6 BOCU ACMI2 1998 PIPE_7
7 CIFL ACMI2 1998 PIPE_7
8 DAPU5 ACMI2 1998 PIPE_7
9 DICHANTHEL ACMI2 1998 PIPE_7
10 GABO2 ACMI2 1998 PIPE_7
11 HEHE5 ACMI2 1998 PIPE_7
12 LIAS ACMI2 1998 PIPE_7
13 LIPY ACMI2 1998 PIPE_7
14 PAVI2 ACMI2 1998 PIPE_7
15 PHPI ACMI2 1998 PIPE_7
16 PHVI5 ACMI2 1998 PIPE_7
17 RAPI ACMI2 1998 PIPE_7
18 SOCA6 ACMI2 1998 PIPE_7
19 VIPE2 ACMI2 1998 PIPE_7
20 ZIAU ACMI2 1998 PIPE_7
21 ACMI2 AMAR2 1998 PIPE_7
I have searched through the R-help archives for hints, which have not been
successful in answering my question. As a new user to R and programming
languages, I truly appreciate your help and thank you for your patience.
Thanks in advance for your response,
Lanna Jin
-----
Lanna Jin
lanna...@gmail.com
510-898-8525
--
View this message in context:
http://n4.nabble.com/nested-looping-functions-and-dataframes-tp1595166p1595166.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.
______________________________________________
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.