On Sep 14, 2008, at 4:40 PM, Jason Thibodeau wrote:

> I cannot provide (all) the sample data (NDA) but here is the entire  
> function:
> TEST_filter <- function(filein,fileout)
>
> {
>         file.remove(fileout)
>         nskip<-0
>         while(1)
>                 {
>                         data_tmp <- read.csv(filein, header=TRUE,  
> nrows=10, skip=nskip)
>
>                         data_filter <- data_tmp[842,2411]

Looks like you forgot a few syntactically essential items here:

data_tmp[842,2411] would only be the 842nd row in the 2411st column.  
And, since you only have 10 rows, you got an informative error. I

>
>                         write.table(data_filter, fileout, append =  
> TRUE, sep= ",", row.names= FALSE, col.names = FALSE)
>                         nskip <- nskip+10
>                 }
>
> }

You also say file.remove( fileout) , then you try to append to  
fileout. Does that make sense?

-- 
David Winsemius, MD
Heritage Laboratories

>
>
> Thanks for the help.
>
> On Sun, Sep 14, 2008 at 4:24 PM, David Winsemius <[EMAIL PROTECTED] 
> > wrote:
>
> On Sep 14, 2008, at 4:01 PM, Jason Thibodeau wrote:
>
> TEST_filter("line50grab.csv","line50grab_filterout.csv")
> Error in `[.data.frame`(data_tmp, seq(842, 2411)) :
>  undefined columns selected
>
>
> I am guessing that you wrapped some code into a function but you did  
> not provide the function. You are not really following the posting  
> guidelines here.
>
>
>
> I know my file has about 3000 columns.
>
> This happened when I used:
> data_tmp <- read.csv(filein, header=TRUE, nrows=10, skip=nskip)
>                       data_filter <- data_tmp[seq(842,2411)]
>                       write.table(data_filter, fileout, append = TRUE,
> sep= ",", row.names= FALSE, col.names = FALSE)
>
> Also using data_tmp[842:2411] did not yield any output being written  
> to my
> file.
>
> Not a big surprise. Appears the error preceded the write.table call.
>
>
> I have another slightly unrelated problem, but I'll propose that  
> after this
> one can be solved.
>
> If the problem is not with the syntax or semantics of TEST_filter as  
> I suspect, then perhaps you should examine the input file from R's  
> perspective with:
>
> ?count.fields
>
> Hard to tell without the actual code and sample data.
>
> -- 
> David Winsemius
>
>
>
>
> Thanks a lot.
>
> On Sun, Sep 14, 2008 at 2:14 PM, Jason Thibodeau  
> <[EMAIL PROTECTED]>wrote:
>
> Jim, this is a GREAT help. I was trying something similar before,  
> but I was
> unable to detect EOF. Thanks for the help!
>
> Also, David, your suggestion worked perfectly.
>
> Thanks for all the help, everyone!
>
>
> On Sun, Sep 14, 2008 at 2:08 PM, jim holtman <[EMAIL PROTECTED]>  
> wrote:
>
> Have you tried:
>
> data_filter <- data[842:2411]
>
> Also if you have a lot of data to read, I would suggest that you use a
> connection, and it all the data is numeric, possibly 'scan'.  If you
> do use a connection, this would eliminate having to 'skip' each time
> which could be time consuming on a large file.  Since it appears that
> you are not writing out the column names in the output file, you could
> bypass the header line on the file by readLine after the open.  So
> something like this might work:
>
> input <- file('yourfile','r')
> invisible(readLines(input, n=1))  # skip the header
> while (TRUE){  # read file
>  x <- try(read.csv(input, n=320, header=FALSE), silent=TRUE)  # catch
> EOF
>  if (inherits(x, 'try-error')) break
>  write.csv(.......)
> }
>
>
>
> On Sun, Sep 14, 2008 at 12:22 PM, Jason Thibodeau  
> <[EMAIL PROTECTED]>
> wrote:
> Hello,
>
> I realize that using: x[x > 3 & x < 5] I can fetch all elements  
> between
> 3
> and 5. However I read in from a CSV file, and I would like to fetch  
> all
> columns from within a range ( 842-2411). In teh past, I have done this
> to
> fetch just select few columns:
>
> data <- read.csv(filein, header=TRUE, nrows=320, skip=nskip)
>                      data_filter <- data[c(2,12,17)]
>                      write.table(data_filter, fileout, append = TRUE,
> sep= ",", row.names= FALSE, col.names = FALSE)
>                      nskip <- nskip+320
>
> This time, however, instead of grabbing columns 2, 12, 17, I woudl  
> like
> all
> columns in the range of 842-2411. I can't seem to do this correctly.
> Could
> somebody please provide some insight? Thanks in advance.
>
> --
> Jason Thibodeau
>
>      [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
>
>
>
> --
> Jason Thibodeau
>
>
>
>
> -- 
> Jason Thibodeau
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
>
>
>
> -- 
> Jason Thibodeau


        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to