Hello!!!
I have a folder (C:/R/) with matrix files, named by number, i.e.
0.mat, 1.mat,...,1250.mat. In this case, they are 5x5 simetric
matrices. I would like to compute a property for each matrix and put
calculated values into a data frame for posterior ploting and
printing. Below there is an example for 7 matrices (0.mat..6.mat)
#define data frame
L <- data.frame(frame=numeric(7), L=numeric(7))
f0<-1/(5*(5-1)) # first variable for computation
#loop over matrices, Open it , calculate property and put into data frame
for(i in 0:6){
m<-matrix(scan('C:/R/i.mat', n=5*5),5,5, byrow=TRUE) # load matrix
f1<-geodist(m)
f2<-sum(colSums(f1$gdist))
l <-f0*f2
# Calculate property
L[i+1, ]<-c(i,l)
# Fill data frame
}
but the matrix cannot be loaded, because it try to open a file named
"i.mat". I don`t know how to loop with a counter named 'i', and use it
to define the name of the file too. How can i do it? I have not found
the way.
Leonardo
evaluating string variables
9 messages · Leonardo Sepulveda Durán, Sean O'Riordain, Dimitris Rizopoulos +4 more
use paste() to construct the file name e.g. fn <- paste(i,".mat",sep="") Sean
On 12/08/05, Leonardo Sepulveda Dur??n <leonardosepulveda at gmail.com> wrote:
Hello!!!
I have a folder (C:/R/) with matrix files, named by number, i.e.
0.mat, 1.mat,...,1250.mat. In this case, they are 5x5 simetric
matrices. I would like to compute a property for each matrix and put
calculated values into a data frame for posterior ploting and
printing. Below there is an example for 7 matrices (0.mat..6.mat)
#define data frame
L <- data.frame(frame=numeric(7), L=numeric(7))
f0<-1/(5*(5-1)) # first variable for computation
#loop over matrices, Open it , calculate property and put into data frame
for(i in 0:6){
m<-matrix(scan('C:/R/i.mat', n=5*5),5,5, byrow=TRUE) # load matrix
f1<-geodist(m)
f2<-sum(colSums(f1$gdist))
l <-f0*f2
# Calculate property
L[i+1, ]<-c(i,l)
# Fill data frame
}
but the matrix cannot be loaded, because it try to open a file named
"i.mat". I don`t know how to loop with a counter named 'i', and use it
to define the name of the file too. How can i do it? I have not found
the way.
Leonardo
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
look at ?paste(), e.g.,
paste("C:/R/", i, "mat", sep = "")
I hope it helps.
Best,
Dimitris
----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven
Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.be/biostat/
http://www.student.kuleuven.be/~m0390867/dimitris.htm
----- Original Message -----
From: "Leonardo Sepulveda Dur??n" <leonardosepulveda at gmail.com>
To: <r-help at stat.math.ethz.ch>
Sent: Friday, August 12, 2005 4:44 PM
Subject: [R] evaluating string variables
Hello!!!
I have a folder (C:/R/) with matrix files, named by number, i.e.
0.mat, 1.mat,...,1250.mat. In this case, they are 5x5 simetric
matrices. I would like to compute a property for each matrix and put
calculated values into a data frame for posterior ploting and
printing. Below there is an example for 7 matrices (0.mat..6.mat)
#define data frame
L <- data.frame(frame=numeric(7), L=numeric(7))
f0<-1/(5*(5-1)) # first variable for computation
#loop over matrices, Open it , calculate property and put into data
frame
for(i in 0:6){
m<-matrix(scan('C:/R/i.mat', n=5*5),5,5, byrow=TRUE) # load matrix
f1<-geodist(m)
f2<-sum(colSums(f1$gdist))
l <-f0*f2
# Calculate property
L[i+1, ]<-c(i,l)
# Fill data frame
}
but the matrix cannot be loaded, because it try to open a file named
"i.mat". I don`t know how to loop with a counter named 'i', and use
it
to define the name of the file too. How can i do it? I have not
found
the way.
Leonardo
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Thanks a lot!!!
using
m<-matrix(scan(paste("C:/R/",i,".mat",sep=""), n=5*5),5,5, byrow=TRUE)
worked very well!!!
Leonardo
Le 12.08.2005 16:44, Leonardo Sepulveda Dur??n a ??crit :
Hello!!!
I have a folder (C:/R/) with matrix files, named by number, i.e.
0.mat, 1.mat,...,1250.mat. In this case, they are 5x5 simetric
matrices. I would like to compute a property for each matrix and put
calculated values into a data frame for posterior ploting and
printing. Below there is an example for 7 matrices (0.mat..6.mat)
#define data frame
L <- data.frame(frame=numeric(7), L=numeric(7))
f0<-1/(5*(5-1)) # first variable for computation
#loop over matrices, Open it , calculate property and put into data frame
for(i in 0:6){
m<-matrix(scan('C:/R/i.mat', n=5*5),5,5, byrow=TRUE) # load matrix
f1<-geodist(m)
f2<-sum(colSums(f1$gdist))
l <-f0*f2
# Calculate property
L[i+1, ]<-c(i,l)
# Fill data frame
}
but the matrix cannot be loaded, because it try to open a file named
"i.mat". I don`t know how to loop with a counter named 'i', and use it
to define the name of the file too. How can i do it? I have not found
the way.
Leonardo
Here are two ways :
paste('C:/R/',i,'.mat',sep="")
sprintf("C:/R/%d.mat",i)
Romain
visit the R Graph Gallery : http://addictedtor.free.fr/graphiques ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~~~~~ Romain FRANCOIS - http://addictedtor.free.fr ~~~~~~ ~~~~ Etudiant ISUP - CS3 - Industrie et Services ~~~~ ~~ http://www.isup.cicrp.jussieu.fr/ ~~ ~~~~ Stagiaire INRIA Futurs - Equipe SELECT ~~~~ ~~~~~~ http://www.inria.fr/recherche/equipes/select.fr.html ~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~
Given my own language inadequacies (I speak only one), I must, of necessity, refrain from criticizing the multilingual. However, in this one instance my sensibilities have been overwhelmed: "symmetric" , please :-) . Incidentally, you may find that file.path() is also useful. Cheers, Bert -- Bert Gunter Genentech Non-Clinical Statistics South San Francisco, CA "The business of the statistician is to catalyze the scientific learning process." - George E. P. Box
-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
Leonardo Sepulveda Dur??n
Sent: Friday, August 12, 2005 7:44 AM
To: r-help at stat.math.ethz.ch
Subject: [R] evaluating string variables
Hello!!!
I have a folder (C:/R/) with matrix files, named by number, i.e.
0.mat, 1.mat,...,1250.mat. In this case, they are 5x5 simetric
matrices. I would like to compute a property for each matrix and put
calculated values into a data frame for posterior ploting and
printing. Below there is an example for 7 matrices (0.mat..6.mat)
#define data frame
L <- data.frame(frame=numeric(7), L=numeric(7))
f0<-1/(5*(5-1)) # first variable for computation
#loop over matrices, Open it , calculate property and put
into data frame
for(i in 0:6){
m<-matrix(scan('C:/R/i.mat', n=5*5),5,5, byrow=TRUE) #
load matrix
f1<-geodist(m)
f2<-sum(colSums(f1$gdist))
l <-f0*f2
# Calculate property
L[i+1, ]<-c(i,l)
# Fill data frame
}
but the matrix cannot be loaded, because it try to open a file named
"i.mat". I don`t know how to loop with a counter named 'i', and use it
to define the name of the file too. How can i do it? I have not found
the way.
Leonardo
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
17 days later
Mac OS 10.3.9 R framework v. 2.1.1
I am attempting to put a fitted curve into each panel of a lattice
graph, but am failing to do so. I have tried writing a very
sophisticated function to do so. The function seems to work when used
with plot(), but does not do so inside a panel function in xyplot().
Any pointers would be appreciated.
#The example data
fact <- gl(2,7)
x <- rep(1:7,2)
y <- c(1,1,2,3,2,3,4,1,2,1,2,3,3,4)
plot(jitter(y/6) ~ x)
# The following user defined function puts a curve (I believe the
correct one) into the scatterplot
panel.predglm <- function(x, y) {
model.trial <- glm(cbind(y,6-y) ~ poly(x,2),
family=quasibinomial(link="logit"))
xfit <- seq(1,7, length=21)
yfit <- predict(model.trial, newdata=data.frame(x=xfit),
type="response")
lines(xfit,yfit) }
panel.predglm(x, y)
# My attempt to use it in a lattice xyplot, however, fails. It draws a
curve which in most cases is outside the dimensions of the plot. I
suspect that the prediction is on the scale of the link functions.
library(lattice)
xyplot(y/6 ~ x|fact, ylim=c(0,.8),
panel=function(x, y,...) {
panel.xyplot(jitter(x),jitter(y))
panel.predglm(x,y) }
)
Any thoughts?
Hank Stevens
Dr. Martin Henry H. Stevens, Assistant Professor
338 Pearson Hall
Botany Department
Miami University
Oxford, OH 45056
Office: (513) 529-4206
Lab: (513) 529-4262
FAX: (513) 529-4243
http://www.cas.muohio.edu/botany/bot/henry.html
http://www.muohio.edu/ecology/
http://www.muohio.edu/botany/
"E Pluribus Unum"
Martin Henry H. Stevens wrote:
Mac OS 10.3.9 R framework v. 2.1.1
I am attempting to put a fitted curve into each panel of a lattice
graph, but am failing to do so. I have tried writing a very
sophisticated function to do so. The function seems to work when used
with plot(), but does not do so inside a panel function in xyplot().
Any pointers would be appreciated.
#The example data
fact <- gl(2,7)
x <- rep(1:7,2)
y <- c(1,1,2,3,2,3,4,1,2,1,2,3,3,4)
plot(jitter(y/6) ~ x)
# The following user defined function puts a curve (I believe the
correct one) into the scatterplot
panel.predglm <- function(x, y) {
model.trial <- glm(cbind(y,6-y) ~ poly(x,2),
family=quasibinomial(link="logit"))
xfit <- seq(1,7, length=21)
yfit <- predict(model.trial, newdata=data.frame(x=xfit),
type="response")
lines(xfit,yfit) }
panel.predglm(x, y)
# My attempt to use it in a lattice xyplot, however, fails. It draws a
curve which in most cases is outside the dimensions of the plot. I
suspect that the prediction is on the scale of the link functions.
library(lattice)
xyplot(y/6 ~ x|fact, ylim=c(0,.8),
panel=function(x, y,...) {
panel.xyplot(jitter(x),jitter(y))
panel.predglm(x,y) }
)
Any thoughts?
Two:
1. The "y" argument in your panel function ranges from 0 to 1 and not 0
to 6 as your plot example assumes.
2. You need to use llines in your panel function and not lines.
Here's a working example:
library(lattice)
fact <- gl(2,7)
x <- rep(1:7,2)
y <- c(1,1,2,3,2,3,4,1,2,1,2,3,3,4)
# The following user defined function puts a curve (I believe the
correct one) into the scatterplot
panel.predglm <- function(x, y) {
model.trial <- glm(cbind(y,6-y) ~ poly(x,2),
family=quasibinomial(link="logit"))
xfit <- seq(1, 7, length=21)
yfit <- predict(model.trial, newdata=data.frame(x=xfit), type="response")
llines(xfit,yfit)
}
xyplot(y/6 ~ x|fact, ylim=c(0,.8),
panel = function(x, y, ...) {
panel.xyplot(jitter(x), jitter(y))
panel.predglm(x, y * 6)
})
Problem Solved (see below) - Many thanks to Sundar Dorai-Raj! Hank Stevens
On Aug 29, 2005, at 3:44 PM, Sundar Dorai-Raj wrote:
Martin Henry H. Stevens wrote:
Mac OS 10.3.9 R framework v. 2.1.1
I am attempting to put a fitted curve into each panel of a lattice
graph, but am failing to do so. I have tried writing a very
sophisticated function to do so. The function seems to work when used
with plot(), but does not do so inside a panel function in xyplot().
Any pointers would be appreciated.
#The example data
fact <- gl(2,7)
x <- rep(1:7,2)
y <- c(1,1,2,3,2,3,4,1,2,1,2,3,3,4)
plot(jitter(y/6) ~ x)
# The following user defined function puts a curve (I believe the
correct one) into the scatterplot
panel.predglm <- function(x, y) {
model.trial <- glm(cbind(y,6-y) ~ poly(x,2),
family=quasibinomial(link="logit"))
xfit <- seq(1,7, length=21)
yfit <- predict(model.trial, newdata=data.frame(x=xfit),
type="response")
lines(xfit,yfit) }
panel.predglm(x, y)
# My attempt to use it in a lattice xyplot, however, fails. It draws a
curve which in most cases is outside the dimensions of the plot. I
suspect that the prediction is on the scale of the link functions.
library(lattice)
xyplot(y/6 ~ x|fact, ylim=c(0,.8),
panel=function(x, y,...) {
panel.xyplot(jitter(x),jitter(y))
panel.predglm(x,y) }
)
Any thoughts?
Two:
1. The "y" argument in your panel function ranges from 0 to 1 and not 0
to 6 as your plot example assumes.
2. You need to use llines in your panel function and not lines.
Here's a working example:
library(lattice)
fact <- gl(2,7)
x <- rep(1:7,2)
y <- c(1,1,2,3,2,3,4,1,2,1,2,3,3,4)
# The following user defined function puts a curve (I believe the
correct one) into the scatterplot
panel.predglm <- function(x, y) {
model.trial <- glm(cbind(y,6-y) ~ poly(x,2),
family=quasibinomial(link="logit"))
xfit <- seq(1, 7, length=21)
yfit <- predict(model.trial, newdata=data.frame(x=xfit),
type="response")
llines(xfit,yfit)
}
xyplot(y/6 ~ x|fact, ylim=c(0,.8),
panel = function(x, y, ...) {
panel.xyplot(jitter(x), jitter(y))
panel.predglm(x, y * 6)
})
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Dr. Martin Henry H. Stevens, Assistant Professor 338 Pearson Hall Botany Department Miami University Oxford, OH 45056 Office: (513) 529-4206 Lab: (513) 529-4262 FAX: (513) 529-4243 http://www.cas.muohio.edu/botany/bot/henry.html http://www.muohio.edu/ecology/ http://www.muohio.edu/botany/ "E Pluribus Unum"