我对 R 很陌生,有点坚持我认为可能是常见的操作。我有许多文件(57 个,大约 15 亿行,共 6 列)需要执行基本功能。我能够读取这些文件并执行我不需要的计算,但我在最终输出中绊倒了。我设想该功能一次处理一个文件,输出工作文件并移至下一个文件。
经过计算,我想输出 57 个以输入数据最初来自的文件命名的新 .txt 文件。到目前为止,我能够在较小的测试数据集上执行计算并吐出 1 个附加的 .txt 文件,但这不是我想要的最终输出。
#list filenames
files <- list.files(path=, pattern="*.txt", full.names=TRUE, recursive=FALSE)
#begin looping process
loop_output = lapply(files,
function(x) {
#Load 'x' file in
DF<- read.table(x, header = FALSE, sep= "\t")
#Call calculated height average a name
R_ref= 1647.038203
#Add column names to .las data
colnames(DF) <- c("X","Y","Z","I","A","FC")
#Calculate return
DF$R_calc <- (R_ref - DF$Z)/cos(DF$A*pi/180)
#Calculate intensity
DF$Ir_calc <- DF$I * (DF$R_calc^2/R_ref^2)
#Output new .txt with calcuated columns
write.table(DF, file=, row.names = FALSE, col.names = FALSE, append = TRUE,fileEncoding = "UTF-8")
})
我最近的代码尝试是搞乱初始 lapply/sapply 函数,如下所示:
#begin looping process
loop_output = sapply(names(files),
function(x) {
以及输出线:
#Output new .csv with calcuated columns
write.table(DF, file=paste0(names(DF), "txt", sep="."),
row.names = FALSE, col.names = FALSE, append = TRUE,fileEncoding = "UTF-8")
从我在 write.table 输出期间一直在读取文件命名函数的内容来看,可能是我尚未与脚本的其余部分完全对齐的键之一。我一直在查看许多其他我认为适用的问题:
使用 lapply 对数据框列表应用函数并将输出保存到具有不同名称的文件中
使用 lapply 写入 data.frames 列表以分隔 CSV 文件
没有运气。我非常感谢在输入 x 个文件、在每个文件上执行相同的功能、然后输出相同的 x 个文件时朝着正确方向的任何见解或路径。谢谢你。