我遇到了問題。 這是我對R指令:R,循環,缺失值,包含數據的大文件
myfiles <- list.files("D:/dolnyslask/2011/after", pattern=".csv")
for (j in 1:length(myfiles)) {
thisfile <- read.csv(myfiles[j], header = T, sep=";", na.string="NA", comment.char="")
for (i in thisfile) {
x = sd(i, na.rm=T)
y = length (na.omit(i))
if (y == 0) {
cat(file=myfiles[j], append=F, (paste("-","\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, (paste("-", "\t")))
{cat(file=myfiles[j], append=F, paste(length(na.omit(i)), "\n"))
}}}}}}}}}}}
} else if (x == 0) {
cat(file=myfiles[j], append=F, paste(format(min(i, na.rm=T), digits=5),"\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(max(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(median(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(sd(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T) - mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T) - mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(length(na.omit(i)), "\n"))
}}}}}}}}}}}
} else {
cat(file=myfiles[j], append=F, paste(format(min(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(max(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(median(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(sd(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(t.test(na.omit(i), conf.level=0.90)$conf.int, digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format(t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(format((t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T))/median(i, na.rm=T), digits=5), "\t"))
{cat(file=myfiles[j], append=F, paste(length(na.omit(i)), "\n"))
}}}}}}}}
}
}
}
我工作的CSV文件(約600)(不同年份),它們中的哪一個看起來是這樣的:
1 NA NA NA NA NA NA 4.0 NA NA 10.0 NA NA NA
2 NA NA NA NA NA NA 12.1 NA NA 8.5 NA NA NA
3 NA NA NA NA NA NA 14.8 NA NA 6.0 NA NA NA
4 NA NA NA NA NA NA 15.0 NA NA 7.4 NA NA NA
5 NA NA NA NA NA NA 16.0 NA NA 8.0 NA NA NA
6 NA NA NA NA NA NA 15.0 NA NA 6.5 NA NA NA
7 NA NA NA NA NA NA 17.8 NA NA 5.8 NA NA NA
8 NA NA NA NA NA NA 16.4 NA NA 6.7 NA NA NA
9 NA NA NA NA NA NA 11.7 NA NA 7.7 NA NA NA
10 NA NA NA NA NA NA 7.4 NA NA 10.9 NA NA NA
11 NA NA NA NA NA NA 3.8 NA NA NA NA NA NA
但他們更大更大。
當我在示例中使用我的循環時,它工作。但是當我用它來做數據時,我需要這樣做,R返回:
Error in if (x == 0) { : missing value where TRUE/FALSE needed
並停止循環。
我每次都在一個文件上有這個問題... 我檢查了一切,我不知道,我可以犯什麼錯誤。請幫幫我。我只使用R幾個星期...但我檢查了每一個提示,我發現在網上...
也許你也可以告訴我,如何寫(我的情況下)我的文件相同名字但是fe在不同的目錄? 非常感謝你! Anna
...並使用這些類型的嵌套'cat'語句可能不是很有效。 –