[R] NA command in a 'for' loop

Helen Sawaya he|en@@w@y@ @end|ng |rom hotm@||@com
Sun Apr 19 21:52:36 CEST 2020


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



More information about the R-help mailing list