[英]Apply a function from a specific R package to all files in folder
我有一张大桌子,正在读入R作为数据框。 在对df进行排序和子集设置后,我使用split()函数将其分为一个列表。 然后,我将该列表写为单独的文本文件。 现在,我将单个.txt文件读回到R中,以便可以确定每个不缺少Energy值的文件的有效大小(来自coda包)。 但是,我认为这不是最有效的方法。 无论如何,有没有一种方法可以对每个文件或列表元素应用有效大小? 当我在其中一个输出文件-effectiveSize(ASP29A [,3])上测试有效大小函数时,它可以正常工作。 但这只是102个文件/元素中的一个。
原始的有序数据帧如下所示;
Chain Res Energy
A ALA28 -1.8046
A ALA28 -2.1910
A ALA28 -1.8403
A ALA28 -2.1813
A ALA28 -2.3693
A ALA28 -2.2808
我希望这很清楚。
作为列表,数据看起来像
$ C.017500:'data.frame': 6003 obs. of 3 variables:
..$ Chain : Factor w/ 3 levels "A","B","C": 3 3 3 3 3 3 3 3 3 3 ...
..$ Res : chr [1:6003] "017500" "017500" "017500" "017500" ...
..$ Energy: num [1:6003] -37 -33.8 -34.7 -35.4 -35 ...
$ A.ALA28 :'data.frame': 6003 obs. of 3 variables:
..$ Chain : Factor w/ 3 levels "A","B","C": 1 1 1 1 1 1 1 1 1 1 ...
..$ Res : chr [1:6003] "ALA28" "ALA28" "ALA28" "ALA28" ...
..$ Energy: num [1:6003] -1.8 -2.19 -1.84 -2.37 -2.18 ...
依此类推,通过102个元素。
这是我的处理方式:
使用以下命令读取文件列表:
setwd("path/to/files/") file.list <- dir(pattern = "txt$")
pattern
位是可选的,但是它可以帮助您仅过滤某些文件。
使用sapply
运行所需的任何功能
res <- sapply(file.list, yourfunction)
例如,要了解文件的文件大小,可以使用:
res <- sapply(file.list, file.size)
您可能需要创建函数来调用effectiveSize
,例如:
eff.size <- function(filename)
{
data <- read.table(filename)
# <do something here with the data as needed>
res <- effectiveSize(<appropriate parameters>)
# return the result
res
}
然后打电话
res <- sapply(file.list, eff.size)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.