Hi all, I have written a simple R script to help me analyze a large data set. I would like to have the script pause to allow the user to input a character string that is subsequently used as a filename when saving tables. I have tried to use the "readline" command - this seems to work fine when entering commands one by one, but when I copy and paste the entire script into R, it does not pause for input and just charges ahead writes the files. Any help is appreciated, I've copied and pasted the script below. Any help is appreciated - I am really new to R so if you can be as detailed as possible in your responses it would be greatly appreciated. Thanks, JT R version: R 2.11.1 GUI 1.34 OS: OS 10.5.8 Here's the script: #readfiles, "a" is nuclear measurements, "b" is cytoplasmic measurements a <- read.table(file.choose(), header=TRUE, sep=",") b <- read.table(file.choose(), header=TRUE, sep=",") #make a new data frame named "new" with important columns new <- data.frame(a$ImageNumber, a$AreaShape_Area, a $Intensity_IntegratedIntensity_OrigRFP, a $Intensity_IntegratedIntensity_OrigGFP, b $Intensity_MeanIntensity_OrigGFP) #make three new columns, "EstCytoIntensity" estimates Cytoplasmic intensity based on the mean measured intensity and an estimate of the nuclear volume to the cytoplasmic volume, "TotalIntensity" is the sum of the integrated nuclear intensity and estimated cytoplasmic intensity, "NucToCytoRatio" is the ratio of nuclear intensity divided by cytoplasmic intensity new$EstCytoIntensity <- b$Intensity_MeanIntensity_OrigGFP * (a $AreaShape_Area/0.3) new$TotalIntensity <- new$a.Intensity_IntegratedIntensity_OrigGFP + new $EstCytoIntensity new$NucToCytoRatio <- new$a.Intensity_IntegratedIntensity_OrigGFP / new $TotalIntensity #creates a table that determines the means for the measurements of all objects within an image library(plyr) newmean <- ddply(new, c("a.ImageNumber"), summarize, NuclearMean=mean(a.Intensity_IntegratedIntensity_OrigGFP, trim=0.01), CytoMean=mean(EstCytoIntensity, trim=0.01), IntensityMean=mean(TotalIntensity, trim=0.01), RatioMean=mean(NucToCytoRatio, trim=0.01)) # input file name name <- readline(prompt="give filename ") #writes tables based on name given, both 'raw' containing all information and 'mean' containing the image means write.table(new, file=paste(name,"raw.csv", sep=""), row.names=FALSE, sep=",") write.table (newmean, file=paste(name, "mean.csv", sep=""), row.names=FALSE, sep=",") #end [[alternative HTML version deleted]]
Don't cut/paste; 'source' in the script. readLines is trying to read from stdin which is where the commands are being read from. Using 'source' avoids that problem. You can also look at some examples I have seen using tk/tcl where you can bring up a window for user input. On Fri, Aug 6, 2010 at 9:52 AM, Johnny Tkach <johnny.tkach at utoronto.ca> wrote:> Hi all, > > I have written a simple R script to help me analyze a large data set. > I would like to have the script pause to allow the user to input a > character string that is subsequently used as a filename when saving > tables. ?I have tried to use the "readline" command - this seems to > work fine when entering commands one by one, but when I copy and paste > the entire script into R, it does not pause for input and just charges > ahead writes the files. ?Any help is appreciated, I've copied and > pasted the script below. ?Any help is appreciated - I am really new to > R so if you can be as detailed as possible in your responses it would > be greatly appreciated. > > Thanks, > > JT > > R version: R 2.11.1 GUI 1.34 > OS: OS 10.5.8 > > Here's the script: > > #readfiles, "a" is nuclear measurements, "b" is cytoplasmic measurements > a <- read.table(file.choose(), header=TRUE, sep=",") > b <- read.table(file.choose(), header=TRUE, sep=",") > > #make a new data frame named "new" with important columns > new <- data.frame(a$ImageNumber, a$AreaShape_Area, a > $Intensity_IntegratedIntensity_OrigRFP, a > $Intensity_IntegratedIntensity_OrigGFP, b > $Intensity_MeanIntensity_OrigGFP) > > #make three new columns, "EstCytoIntensity" estimates Cytoplasmic > intensity based on the mean measured intensity and an estimate of the > nuclear volume to the cytoplasmic volume, "TotalIntensity" is the sum > of the integrated nuclear intensity and estimated cytoplasmic > intensity, "NucToCytoRatio" is the ratio of nuclear intensity divided > by cytoplasmic intensity > new$EstCytoIntensity <- b$Intensity_MeanIntensity_OrigGFP * (a > $AreaShape_Area/0.3) > new$TotalIntensity <- new$a.Intensity_IntegratedIntensity_OrigGFP + new > $EstCytoIntensity > new$NucToCytoRatio <- new$a.Intensity_IntegratedIntensity_OrigGFP / new > $TotalIntensity > > #creates a table that determines the means for the measurements of all > objects within an image > library(plyr) > newmean <- ddply(new, c("a.ImageNumber"), summarize, > NuclearMean=mean(a.Intensity_IntegratedIntensity_OrigGFP, trim=0.01), > CytoMean=mean(EstCytoIntensity, trim=0.01), > IntensityMean=mean(TotalIntensity, trim=0.01), > RatioMean=mean(NucToCytoRatio, trim=0.01)) > > # input file name > name <- readline(prompt="give filename ") > > #writes tables based on name given, both 'raw' containing all > information and 'mean' containing the image means > > write.table(new, file=paste(name,"raw.csv", sep=""), row.names=FALSE, > sep=",") > write.table (newmean, file=paste(name, "mean.csv", sep=""), > row.names=FALSE, sep=",") > > #end > > > > > > ? ? ? ?[[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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
Petr PIKAL
2010-Aug-06 14:04 UTC
[R] Odp: Pausing script to allow user input from keyboard.
Hi Some time ago somebody advised me to use cat("\n","Enter filename","\n") # prompt x=scan(n=1) # read 1 line from console than use x in further code Regards Petr r-help-bounces at r-project.org napsal dne 06.08.2010 15:52:17:> Hi all, > > I have written a simple R script to help me analyze a large data set. > I would like to have the script pause to allow the user to input a > character string that is subsequently used as a filename when saving > tables. I have tried to use the "readline" command - this seems to > work fine when entering commands one by one, but when I copy and paste > the entire script into R, it does not pause for input and just charges > ahead writes the files. Any help is appreciated, I've copied and > pasted the script below. Any help is appreciated - I am really new to > R so if you can be as detailed as possible in your responses it would > be greatly appreciated. > > Thanks, > > JT > > R version: R 2.11.1 GUI 1.34 > OS: OS 10.5.8 > > Here's the script: > > #readfiles, "a" is nuclear measurements, "b" is cytoplasmic measurements > a <- read.table(file.choose(), header=TRUE, sep=",") > b <- read.table(file.choose(), header=TRUE, sep=",") > > #make a new data frame named "new" with important columns > new <- data.frame(a$ImageNumber, a$AreaShape_Area, a > $Intensity_IntegratedIntensity_OrigRFP, a > $Intensity_IntegratedIntensity_OrigGFP, b > $Intensity_MeanIntensity_OrigGFP) > > #make three new columns, "EstCytoIntensity" estimates Cytoplasmic > intensity based on the mean measured intensity and an estimate of the > nuclear volume to the cytoplasmic volume, "TotalIntensity" is the sum > of the integrated nuclear intensity and estimated cytoplasmic > intensity, "NucToCytoRatio" is the ratio of nuclear intensity divided > by cytoplasmic intensity > new$EstCytoIntensity <- b$Intensity_MeanIntensity_OrigGFP * (a > $AreaShape_Area/0.3) > new$TotalIntensity <- new$a.Intensity_IntegratedIntensity_OrigGFP + new > $EstCytoIntensity > new$NucToCytoRatio <- new$a.Intensity_IntegratedIntensity_OrigGFP / new > $TotalIntensity > > #creates a table that determines the means for the measurements of all > objects within an image > library(plyr) > newmean <- ddply(new, c("a.ImageNumber"), summarize, > NuclearMean=mean(a.Intensity_IntegratedIntensity_OrigGFP, trim=0.01), > CytoMean=mean(EstCytoIntensity, trim=0.01), > IntensityMean=mean(TotalIntensity, trim=0.01), > RatioMean=mean(NucToCytoRatio, trim=0.01)) > > # input file name > name <- readline(prompt="give filename ") > > #writes tables based on name given, both 'raw' containing all > information and 'mean' containing the image means > > write.table(new, file=paste(name,"raw.csv", sep=""), row.names=FALSE, > sep=",") > write.table (newmean, file=paste(name, "mean.csv", sep=""), > row.names=FALSE, sep=",") > > #end > > > > > > [[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 guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.