我正在尝试将R(strandcode.txt)中写入的函数遍历给定目录中的所有文件。在Bash命令行中的文件上运行R函数
strandcode.txt如下所示,它是计算卡方检验的简单函数。
strand <- function(file){
data <- as.data.frame(read.table(file))
colnames(data) <- c('chr', 'pos', 'fwd', 'bkwd')
data$chi <- ((.5 - (data$fwd/(data$fwd + data$bkwd)))^2)/.5
keep <- data[data$chi < .823, ]
return(keep)
}
strand{$i}
当我在我的Linux服务器上运行这个时,我使用Rscript并使用下面的命令遍历目录中的所有文件。
for i in $(ls); do Rscript strandcode.txt >> strandout.txt; done
然而,这是给我的错误 错误:意外“{”在“链{” 执行暂停
我也曾尝试下面的命令行(以最终线路输出strandcode的。 txt)
for i in $(ls); do Rscript strandcode.txt; Rscript strand{$i} >> strandout.txt; done
for i in $(ls); do Rscript strandcode.txt strand{$i} >> strandout.txt; done
两者都运行没有错误,并没有输出任何东西到我outfile。
任何建议将不胜感激。谢谢!
'strand {$ i}'不是正确的R代码。你的'$ i'在脚本中是不可见的,所以你需要知道bash所知道的'$ i'到你的脚本知道的东西。这可能是http://stackoverflow.com/questions/2151212/how-can-i-read-command-line-parameters-from-an-r-script和链接页面的副本http://stackoverflow.com/questions/2151212/how-can-i-read-command-line-parameters-from-an-r-script/2151627#2151627,其中Dirk修改他的建议。 – r2evans