我有一个非常愚蠢的问题。已经有人问过了,但是提供的解决方案似乎都不适合我。 我正在遍历包含不同数据帧的列表,以执行分析并为每个输入数据帧保存不同名称的输出文件。名称将类似于originalname_output.txt。 我写了这段代码,看起来似乎很好(以正确的方式进行了所有分析),但是在进入write.table部分时却出错了。
library(qqman)
library(QuASAR)
list_QuASAR <- list (Fw, Rv, tot) #all of the are dfs
for (i in list_QuASAR){
output <- fitQuasarMpra(i[,2], i[,3], i[,4])
print(sum(output$padj_quasar<0.1))
qq(output$pval3, col = "black", cex = 1)
write.table(output, paste0("quasar_output/", i, "_output.txt"), col.names = T, sep = "\t")
}
fitQuasarMpra是称为QuASAR的软件包的功能。当然,名为quasar_output的子目录已经存在。
我得到的错误是:
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
the condition has length > 1 and only the first element will be used
我知道这是一个微不足道的问题,但是我目前陷入困境。我可能会考虑切换并使用lapply,但随后可能会遇到相同的问题,因此我想先解决此问题。 非常感谢您的帮助。
答案 0 :(得分:4)
您正在尝试使用数据框对象(i
)作为文件名的一部分;即数据框本身,而不是其名称。您可以尝试遍历命名列表:
list_QuASAR <- list (Fw = Fw,Rv = Rv,tot = tot)
for (i in names(list_QuASAR)){
output <- fitQuasarMpra(list_QuASAR[[i]][,2], list_QuASAR[[i]][,3], list_QuASAR[[i]][,4])
print(sum(output$padj_quasar<0.1))
qq(output$pval3, col = "black", cex = 1)
write.table(output, paste0("quasar_output/", i, "_output.txt"), col.names = T, sep = "\t")
}