使用 R 在文件夹的所有文件中应用特定功能

Apply a particular function in all files of a folder using R

我开发了一个名为 DNAdupstability 的特定 R 函数用于一些生物学分析,它需要使用作为 fasta 文件 (.fasta/.txt) 的输入,其中 returns 一个数据框格式:

 Sequence Position8 Position9 Position10 Position11 Position12 Position13
1        1 -1.473571 -1.473571  -1.462143  -1.412143  -1.412143  -1.371429
  Position14 Position15 Position16 Position17 Position18 Position19 Position20
1  -1.372143       -1.4  -1.428571  -1.439286  -1.430714  -1.420714  -1.397143

这是一个随机数据帧,它根据输入序列继续到 n 个位置。我有一个名为 Random_fasta 的文件夹,它有 1333 个等长但不同的 fasta 序列。开发的函数 DNAdupstability 为文件夹 Random_fasta 中的单个 fasta 序列(上述数据框)提供了所需的结果,但现在我想使用相同的 [= 对所有其他 1332 个序列进行分析=13=] 函数和一个形成类似于所有序列格式的组合数据框

  Sequence Position8 Position9 Position10 Position11 Position12 Position13
1        1 -1.434286 -1.434286  -1.446429  -1.435714  -1.445714  -1.509286
2        2 -1.522143 -1.492143  -1.463571  -1.435714  -1.492857  -1.544286
3        3 -1.232857 -1.265000  -1.333571  -1.328571  -1.330000  -1.329286
4        4 -1.799286 -1.799286  -1.799286  -1.799286  -1.730714  -1.735714
5        5 -1.547143 -1.507143  -1.535714  -1.530714  -1.478571  -1.450714
  Position14 Position15 Position16 Position17 Position18 Position19 Position20
1  -1.452143  -1.402143  -1.390000  -1.457143  -1.509286  -1.498571  -1.458571
2  -1.544286  -1.544286  -1.544286  -1.544286  -1.601429  -1.715000  -1.755000
3  -1.340000  -1.328571  -1.333571  -1.344286  -1.384286  -1.446429  -1.486429
4  -1.667143  -1.605000  -1.536429  -1.486429  -1.536429  -1.605000  -1.600000
5  -1.450714  -1.450714  -1.412143  -1.372143  -1.434286  -1.531429  -1.615000

这样我就可以计算位置均值,然后使用 ggplot2 将其进一步用于某些可视化。有什么方法可以在文件夹的所有文件中应用相同的功能,特别是使用 R 并获得所需的组合数据框?任何帮助将不胜感激!

一个选项是使用 list.files 递归 return 主文件夹中的所有文件,然后通过遍历文件应用自定义函数,并转换为单个 data.frame do.call(rbind

files <- list.files('path/to/your/folder', recursive = TRUE, 
  pattern = "\.txt$", full.names = TRUE)
lst1 <- lapply(files, DNAdupstability)
out <- do.call(rbind, lst1)

或者我们可以使用 purrrmap_dfrlist 的所有输出合并为一个 data.frame

library(purrr)
out <- map_dfr(files, DNAdupstability)