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.