Hi Helen,
Your problem may lie in using row.names=TRUE. I was puzzled when an
extra column kept popping up in the output files. For reading in and
replacing zeros with NAs, this seems to work:

for(mockdata in 1:3) {
 mdf<-data.frame(sample(2:20,10),sample(2:20,10),sample(0:1,10,TRUE))
 write.table(mdf,file=paste0("threat",mockdata,".txt"),quote=FALSE,
  row.names=FALSE,col.names=FALSE)
}
txt.files<-list.files(".",pattern="threat[1-3]")
for(tf in txt.files) {
 d<-read.table(tf)
 d[,3][d[,3]==0]<-NA
 write.table(d,sub("[.]",".tbls.",tf),quote=FALSE,row.names=FALSE)
}

Jim

On Tue, Apr 21, 2020 at 7:57 AM Rui Barradas <ruipbarra...@sapo.pt> wrote:
>
> Hello,
>
> I believe the only way we have to see what is happening is for you to
> post the output of
>
>
> dput(head(d, 20))  # or 30
>
>
> or, with d2 a subset of d that includes zeros,
>
>
> dput(head(d2, 20))
>
>
> Hope this helps,
>
> Rui Barradas
>
> Às 17:48 de 20/04/20, Helen Sawaya escreveu:
> > I have one column that represents correct response versus error (correct
> > is coded as 1 and error is coded as 0). Nowhere else in the dataset are
> > there values of 0. The vector is treated as an integer.
> > ------------------------------------------------------------------------
> > *From:* Michael Dewey <li...@dewey.myzen.co.uk>
> > *Sent:* Monday, April 20, 2020 7:35 PM
> > *To:* Helen Sawaya <helensaw...@hotmail.com>; Rui Barradas
> > <ruipbarra...@sapo.pt>; r-help@R-project.org <r-help@R-project.org>
> > *Subject:* Re: [R] NA command in a 'for' loop
> > Just a thought Helen but is x being treated as a real and what you think
> > are zero and are printed as zero are in fact some very small number? If
> > so you need to alter your test appropriately.
> >
> > Michael
> >
> > On 20/04/2020 17:25, Helen Sawaya wrote:
> >> Thank you for your reply.
> >>
> >> I tried d[] <- lapply(d, function(x) {is.na(x) <- x == 0; x})
> >> but I am still getting zeros instead of NAs in my output..
> >>
> >> I wonder if the problem is that some of my data files don't have any zeros 
> >> (participants made no errors)..
> >> ________________________________
> >> From: Rui Barradas <ruipbarra...@sapo.pt>
> >> Sent: Monday, April 20, 2020 9:05 AM
> >> To: Helen Sawaya <helensaw...@hotmail.com>; r-help@R-project.org 
> >> <r-help@R-project.org>
> >> Subject: Re: [R] NA command in a 'for' loop
> >>
> >> Hello,
> >>
> >> Instead of
> >>
> >> d[d == 0] <- NA
> >>
> >> try
> >>
> >> d[] <- lapply(d, function(x) {is.na(x) <- x == 0; x})
> >>
> >>
> >> Also, in the first for loop
> >>
> >> paste(i, sep = "")
> >>
> >> does nothing, it's the same as i.
> >> And the same for
> >>
> >> (d2$V4 == 1) == TRUE
> >>
> >> Since (d2$V4 == 1)  already is FALSE/TRUE there is no need for
> >>
> >> (.) == TRUE
> >>
> >>
> >> Hope this helps,
> >>
> >> Rui Barradas
> >>
> >>
> >>
> >> Às 20:52 de 19/04/20, Helen Sawaya escreveu:
> >>> Dear R experts,
> >>>
> >>> I am using a 'for' loop to apply commands to multiple datasets (each file 
> >>> is one participant). The only one not working is the command that 
> >>> identifies zeros in my datasets and changes them to NAs. But when I look 
> >>> at the output, zeros ("0") are still present.  Surprisingly, the 
> >>> functions work fine when I apply them to a single
> > dataset (outside the loop). I've tried:
> >>>
> >>> all.files <- list.files(".")
> >>> txt.files <- grep("threat.txt",all.files,value=T)
> >>>
> >>> for(i in txt.files){
> >>>     d <- read.table(paste(i,sep=""),header=F)
> >>>     d[d==0] <- NA #replace zeros with NA
> >>>     write.table(d, paste0(i,".tlbs.txt"), quote=FALSE, row.names=TRUE)}
> >>>     d<-d[ ,-c(10,11)]
> >>>     d2<-d[complete.cases(d), ]
> >>>     d2$V4<-as.numeric(d2$V4)
> >>>     congruent <- (d2$V4 == 1) == TRUE
> >>>     x <- get_tlbs(d2$V14, congruent, prior_weights = NULL, method = 
> >>> "weighted", fill_gaps = FALSE)
> >>>     write.table(x, paste0(i,".tlbs.txt"), quote=FALSE, row.names=TRUE)}
> >>>
> >>> I've also tried:
> >>>
> >>> for(i in txt.files){
> >>>     d <- read.table(paste(i,sep=""),header=F)
> >>>     if (0 %in% d)
> >>>     {replace_with_na(d,replace = list(x = 0))} # replace zeros with NA
> >>>     d<-d[ ,-c(10,11)]
> >>>     d2<-d[complete.cases(d), ]
> >>>     d2$V4<-as.numeric(d2$V4)
> >>>     congruent <- (d2$V4 == 1) == TRUE
> >>>     x <- get_tlbs(d2$V14, congruent, prior_weights = NULL, method = 
> >>> "weighted", fill_gaps = FALSE)
> >>>     write.table(x, paste0(i,".summaryoutput.txt"), quote=FALSE, 
> >>> row.names=TRUE)}
> >>>
> >>> Thank you for your help.
> >>> Sincerely
> >>> Helen
> >>>
> >>>         [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>> 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.
> >>>
> >>
> >>        [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >> 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.
> >>
> >>
> >
> > --
> > Michael
> > http://www.dewey.myzen.co.uk/home.html
>
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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 -- To UNSUBSCRIBE and more, see
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