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.

Reply via email to