【发布时间】:2016-10-14 09:35:52
【问题描述】:
我正在尝试在给定目录中的所有文件上迭代我用 R (strandcode.txt) 编写的函数。
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
但是这给了我错误 错误:“strand{”中出现意外的“{” 执行停止
我也尝试过以下命令行(从 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
两者都运行没有错误,也没有向我的输出文件输出任何内容。
任何建议将不胜感激。谢谢!
【问题讨论】:
-
strand{$i}不是正确的 R 代码。您的$i在脚本中不可见,因此您需要将 bash 所知道的$i转换为您的脚本所知道的内容。这可能是 stackoverflow.com/questions/2151212/… 和链接页面 stackoverflow.com/questions/2151212/… 的副本,Dirk 修改了他的推荐。
标签: r linux bash command-line rscript