目前我的R循环(见下文)在每次迭代期间都会覆盖自己.我想将每个循环的结果输出到文本文件中.
更详细:R初学者在这里想知道如何在我的脚本中包含一行,以便将每个文件的平均值计算写入文本文件.这样脚本就会创建一个新的空文本文件,然后每次脚本计算文件中第4列的平均值时,该值将输出到文本文件中的一行,该文件包含column1中文件的名称和平均值in第2栏.感谢您的帮助!
filename <- system("ls /dir/",intern=TRUE)
for(i in 1:length(filename)){
file <- read.table(filename[i],header=FALSE) ## if you have headers in your files ##
mean <- mean(as.numeric(file$V4))
}
Run Code Online (Sandbox Code Playgroud)
要在循环运行时执行此操作,请在循环中添加:
write.csv(data.frame(fname=filename[i],mean=mean),file="output.csv",append=TRUE)
Run Code Online (Sandbox Code Playgroud)
但是,这将意味着大量的文件系统开销,并且在R中生成整个数据帧然后将文件作为整体写入会更快.而不是你的循环写:
means <- sapply(filename, function(x) mean(as.numeric(read.table(x,header=FALSE)$V4)))
Run Code Online (Sandbox Code Playgroud)
然后将文件作为一个整体写入:
write.csv(data.frame(fname=filename,mean=means),file="output.csv")
Run Code Online (Sandbox Code Playgroud)