我有4个群体中大约100个个体的全基因组数据。每个群体都有一个单独的目录,其中包含每个人的单独文件。我正在尝试使用以下代码清理所有内容并将其聚合到一个数据帧中:
popAgg <- function (dir){
fileNames <- list.files(path = dir , full.names = TRUE)
data <- lapply (
X = seq_along(fileNames) , FUN = function (x) {
cbind (x , read.csv (fileNames[x] , sep = "\t", header = FALSE))
}
)
popData <- rbind.fill(data)
popData <- cbind (dir , popData)
popData <- popData[popData[14]!=0, c(1 , 2 , 4 , 6 , 14)]
names(popData) <- c("pop" , "ind" , "read.depth" , "position", "no.diff")
return(popData)
}
dirNames <- list.dirs()
metaPopData <- lapply(X = dirNames , FUN = popAgg)这应该会给我一个数据帧的列表,然后可以用rbind.fill折叠。
最后,给出了附加的mwe应该给出的输出:
pop ind read.depth position no.diff
27 MWE1/ 2 382 437 418
271 MWE2/ 2 382 437 418我使用popAgg函数通过手动应用于mwe中的两个目录来派生此输出,因此看起来lapply是我遇到的唯一问题,并且似乎是错误的根源。此外,我在popAgg函数中使用了相同的技术,除了将该函数编写为lambda之外,因此我不确定出了什么问题。
发布于 2015-07-09 00:11:43
我通过在list.dirs(...)中设置recursive = FALSE修复了这个问题。
https://stackoverflow.com/questions/31297082
复制相似问题