Skip to content
Back to formatted view

Raw Message

Message-ID: <AM5PR10MB1746BD3E4FCB46D04FE920C8B9D70@AM5PR10MB1746.EURPRD10.PROD.OUTLOOK.COM>
Date: 2020-04-19T19:52:36Z
From: Helen Sawaya
Subject: NA command in a 'for' loop

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]]