我有一些带有readr包的R代码,在本地计算机上运行良好-我使用list.files查找具有特定扩展名的文件,然后使用readr对找到的那些文件进行操作。
我的问题:我想对AWS S3中的文件做类似的事情,我正在寻找一些有关如何使用当前R代码执行相同操作的指针。
谢谢。
我想要什么: 给定这样的AWS文件夹/文件结构 -/folder1/subfolder1/quant.sf -/folder1/subfolder2/quant.sf -/folder1/subfolder3/quant.sf 等等,在每个子文件夹都有相同文件'quant.sf'的地方,我想获得一个包含S3路径的数据帧,并且我想使用下面显示的R代码对所有Quantum.sf文件进行操作。 / p>
下面,我展示了当前可在Linux机器上处理数据的R代码。
get_quants <- function(path1, ...) {
additionalPath = list(...)
suppressMessages(library(tximport))
suppressMessages(library(readr))
salmon_filepaths=file.path(path=path1,list.files(path1,recursive=TRUE, pattern="quant.sf"))
samples = data.frame(samples = gsub(".*?quant/salmon_(.*?)/quant.sf", "\\1", salmon_filepaths) )
row.names(samples)=samples[,1]
names(salmon_filepaths)=samples$samples
# IF no tx2Gene available, we will only get isoform level counts
salmon_tx_data = tximport(salmon_filepaths, type="salmon", txOut = TRUE)
## Get transcript count summarization
write.csv(as.data.frame(salmon_tx_data$counts), file = "tx_NumReads.csv")
## Get TPM
write.csv(as.data.frame(salmon_tx_data$abundance), file = "tx_TPM_Abundance.csv")
if(length(additionalPath > 0)) {
tx2geneFile = additionalPath[[1]]
my_tx2gene=read.csv(tx2geneFile,sep = "\t",stringsAsFactors = F, header=F)
salmon_tx2gene_data = tximport(salmon_filepaths, type="salmon", txOut = FALSE, tx2gene=my_tx2gene)
## Get Gene count summarization
write.csv(as.data.frame(salmon_tx2gene_data$counts), file = "tx2gene_NumReads.csv")
## Get TPM
write.csv(as.data.frame(salmon_tx2gene_data$abundance), file = "tx2gene_TPM_Abundance.csv")
}
}
答案 0 :(得分:0)
我发现使用aws.s3 R包最简单。在这种情况下,您将使用s3read_using()
和s3write_using()
函数来与S3进行保存。像这样:
library(aws.s3)
my_tx2gene=s3read_using(FUN=read.csv, object="[path_in_s3_to_file]",sep = "\t",stringsAsFactors = F, header=F)
基本上,它是您要用于文件输入/输出的任何功能的包装。可以与read_json,saveRDS或其他任何工具配合使用!