我正在编写一段代码,除其他变量外,它将标头从 bash 脚本传递给 R。这可能看起来很愚蠢或愚蠢,但对于我的特殊需求,这正是我想要的。所以,我有一个 bash 脚本:
#!/bin/bash
Rscript script.R "c("column1","column2","column3")"
我已经对其进行了简化,但要点在那里:它启动了一个 Rscript 实例,并将所需的标头作为参数传递。R 脚本包含以下部分或相关代码:
args<-commandArgs(TRUE) # enable arguments
header <- args[1] # store the first argument in a variable
现在,我想将数据的标头更改为作为参数传递的标头。当我从 GUI(在我的例子中是 Rstudio)运行它时,以下代码都可以按需要工作:
(1) colnames(data) <- header
(2) colnames(data) <- paste(header, sep=" ")
(3) for (i in 1:length(header)){colnames(data)[i] <- header[i]}
所有这些命令都将标题分成 3 部分,以便所有三列都有一个新标题(分别为“column1”、“column2”和“column3”)。但是,如果我像上面描述的那样从我的 bash 脚本运行它(调用 Rscript),它就不起作用。相反,它给出了以下输出:
c(column1,column2,column3) Chromosome
1 rs10 7
2 rs1000000 12
3 rs10000010 4
4 rs10000012 4
5 rs10000013 4
6 rs10000017 4
Position
1 92221824
2 125456933
3 21227772
4 1347325
5 36901464
6 84997149
...显然,这不是我想要的。上面列出的三个命令现在都不能正常工作。这让我感到困惑,因为无论我以何种方式运行它,无论是 Rstudio 还是 Rscript,我都希望我的代码的结果是相同的。
有人对此有解释/解决方案吗?任何想法都非常感谢。