加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Bash命令行中对文件运行R函数

发布时间:2020-12-15 21:02:13 所属栏目:安全 来源:网络整理
导读:参见英文答案 How can I read command line parameters from an R script?????????????????????????????????????10个 我试图迭代我在R(strandcode.txt)中编写的函数在给定目录中的所有文件. strandcode.txt如下所示,它是计算Chi Squared测试的简单函数. stra
参见英文答案 > How can I read command line parameters from an R script?????????????????????????????????????10个
我试图迭代我在R(strandcode.txt)中编写的函数在给定目录中的所有文件.

strandcode.txt如下所示,它是计算Chi Squared测试的简单函数.

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

两者都运行没有错误,没有输出任何东西到我的outfile.

任何建议将不胜感激.谢谢!

解决方法

您必须使用仅匹配数据文件的模式,而不是扩展到目录中每个文件的$(ls),包括strandcode.txt.假设您已将所有数据文件移动到名为data /的子目录中,您可以这样做

for i in data/*; do Rscript -e "source('strandcode.txt'); print(strand('$i'))" >> strandout.txt; done

从strandcode.txt中删除最后一行后,如注释中所述,这是不正确的.只要文件名不包含单引号或其他有问题的字符,这应该有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读