【问题标题】:Read in multiple .csv files, transform them and save as new files in R读入多个 .csv 文件,对其进行转换并在 R 中另存为新文件
【发布时间】:2022-06-23 22:55:43
【问题描述】:
我的工作目录中有 90 个 .csv 文件,每个文件都是一个 90*90 的矩阵。文件名称不一致(这是一个示例)
>list.files()
[1] "sub-001-SGU-cn.csv"
[2] "sub-001-SGU-nv.csv"
[3] "sub-002-Cam-cn.csv"
[4] "sub-002-Man-lv.csv"
[5] "sub-002-SGU-cn.csv"
每个矩阵都是不对称的(即,只有上三角包含值,下三角包含零)。我想编写一个循环函数来读取每个文件,对上三角形进行log10 转换,并将输出保存在我的工作目录中,名称相同但添加后缀“_log.csv”。我如何在 R 中做到这一点?
【问题讨论】:
标签:
r
dplyr
lapply
purrr
split-apply-combine
【解决方案1】:
我们可能会使用
files <- list.files(pattern = "\\.csv$", full.names = TRUE)
new_names <- sub(files, "\\.csv$", "_log.csv", files)
lst1 <- lapply(files, function(x) {
dat <- read.csv(files)
dat[upper.tri(dat)] <- log10(dat[upper.tri(dat)])
dat
})
Map(function(x, y) write.csv(x, file = y, row.names = FALSE, quote = FALSE),
lst1, new_names)