Hi,
I'm having a mental block as to how I can automatically assign filenames
to the output of the following code. I am wishing to create a separate
.png file for every image created, each of them having a sequential
filename ie "sourcefile_index.png" so that I can create a movie from
them.
Please could someone tell me where I am going wrong?
the following code works fine and outputs to screen:
fun_pca_vector_movie_plot<-function(x,y,z,t){
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
}
box()
}
}}
but when I try to save to file as follows it doesn't work:
fun_pca_vector_movie_plot<-function(x,y,z,t){
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
plot.new()
png(file=(paste(x".",i,"_",zz,".png",sep="")),width=240,height=240)
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
dev.off()
}
box()
}
}}
many thanks in advance!
Laura Quinn
Institute of Atmospheric Science
School of Earth and Environment
University of Leeds
Leeds
LS2 9JT
tel: +44 113 343 1596
fax: +44 113 343 6716
mail: laura at env.leeds.ac.uk
Exporting to file: passing source name to file name in loop
4 messages · Brian Ripley, Laura Quinn, Fernando Henrique Ferraz P. da Rosa
What does `it doesn't work' actually mean? Please read the posting guide and follow its advice. Also, please show us readable and properly indented code, using spaces consistently. (There is a chapter in `Writing R Extensions' showing you how to do this.) I just cannot parse your code, and suspect you cannot either.
On Sun, 14 Nov 2004, Laura Quinn wrote:
Hi,
I'm having a mental block as to how I can automatically assign filenames
to the output of the following code. I am wishing to create a separate
.png file for every image created, each of them having a sequential
filename ie "sourcefile_index.png" so that I can create a movie from
them.
Please could someone tell me where I am going wrong?
the following code works fine and outputs to screen:
fun_pca_vector_movie_plot<-function(x,y,z,t){
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
}
box()
}
}}
but when I try to save to file as follows it doesn't work:
fun_pca_vector_movie_plot<-function(x,y,z,t){
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
plot.new()
png(file=(paste(x".",i,"_",zz,".png",sep="")),width=240,height=240)
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
dev.off()
}
box()
}
}}
many thanks in advance!
Laura Quinn
Institute of Atmospheric Science
School of Earth and Environment
University of Leeds
Leeds
LS2 9JT
tel: +44 113 343 1596
fax: +44 113 343 6716
mail: laura at env.leeds.ac.uk
______________________________________________ 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
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Apologies - Sunday afternoon coding, not my forte.
I am trying to pass the name of my input variable "x" (my.data) into the
name of my output file, and am wanting to combine this with a "count"
value.
I hope that this code is a little more readable (though I seem to be
having problems pasting the formatting into my email composition):
fun_pca_vector_movie_plot <- function (x,y,z,t) {
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
plot.new()
png(file=(paste(as.character(x),".",i,".png",sep="")),width=240,height=240)
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
}
box()
}
dev.off()
}
}
I get a "syntax error" relating to the as.character(x) part of the file
name - if I remove this, the code works fine for the rest of the file
extension. I have tried deparse(x) but this returns a file extension of
the following nature:
structure(list(f1 = c(5.56358661715647, 6.10364037003176,
6.24040147126807, .10.png
Thanks,
Laura
Laura Quinn
Institute of Atmospheric Science
School of Earth and Environment
University of Leeds
Leeds
LS2 9JT
tel: +44 113 343 1596
fax: +44 113 343 6716
mail: laura at env.leeds.ac.uk
Laura Quinn writes:
Apologies - Sunday afternoon coding, not my forte.
I am trying to pass the name of my input variable "x" (my.data) into the
name of my output file, and am wanting to combine this with a "count"
value.
I hope that this code is a little more readable (though I seem to be
having problems pasting the formatting into my email composition):
fun_pca_vector_movie_plot <- function (x,y,z,t) {
zz=seq(1,(nrow(x)-t),by=t);jj=seq(t+1,(nrow(x)),by=t)
for(i in seq(along=zz)){
plot.new()
png(file=(paste(as.character(x),".",i,".png",sep="")),width=240,height=240)
pca<-prcomp(x[zz[i]:jj[i],], retx=T, center=T,scale=T)
{
par(mfrow=c(1,z))
for(i in 1:z){
image(east,north,t(map.matrix),col=my.colors,axes=T,
xlab="",ylab="")
text(y[,3],y[,2],labels=as.character(y[,1]))
title(paste("Component",i,"Step:"))
arrows(y[,3],y[,2],(y[,3]+50*(pca$rotation[i,1:(ncol(x)/2)])),
(y[,2]+50*(pca$rotation[i,((ncol(x)/2)+1):(ncol(x))])),
angle=30,length=0.05,code=2)
}
box()
}
dev.off()
}
}
I get a "syntax error" relating to the as.character(x) part of the file
name - if I remove this, the code works fine for the rest of the file
extension. I have tried deparse(x) but this returns a file extension of
the following nature:
structure(list(f1 = c(5.56358661715647, 6.10364037003176,
6.24040147126807, .10.png
You should try something like:
png(file=paste(substitute(x),".",i,".png",sep=""),width=240,height=240)
Also, drop the 'plot.new()', it's useless. png() already sets up
a new ploting device.
--
Fernando Henrique Ferraz P. da Rosa
http://www.ime.usp.br/~feferraz