如何将R中的变量传递给系统命令?

如何将R中的变量传递给系统命令?,r,R,我有一个文件,我是这样读的: input.bed <- as.data.frame(read.table("lamina_filtered.bed", header = FALSE, sep = "\t", stringsAsFactors = FALSE, quote = "")); 我得到这个错误: /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `/usr/l

我有一个文件,我是这样读的:

input.bed <- as.data.frame(read.table("lamina_filtered.bed", header = FALSE, sep = "\t", 
    stringsAsFactors = FALSE, quote = ""));
我得到这个错误:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `/usr/local/bin/KentUtils/bedToPsl c("chr1", "chr1",         "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", "chr1", '
这是input.bed的一个示例。它是一个简单的bed文件管理器:

   V1       V2       V3
1 chr1 11323785 11617177
2 chr1 12645605 13926923
3 chr1 14750216 15119039
4 chr1 18102157 19080189
5 chr1 29491029 30934636
6 chr1 33716472 35395979

仔细观察你的错误。您尝试执行的命令类似于:

/usr/local/.../bedToPsl c("chr1","chr1","chr1") ...
您使用
paste
data.frame
粘贴到系统命令中。您的操作系统无法理解R数据结构。由于您的问题不包括系统调用应该接收什么的详细信息,因此无法告诉您如何解决此问题。但这里有一些可能性

  • 标量值-您可能需要执行类似于
    input.bed$V1[1]
    的操作,以便只传入一个字符串。确保它的引用(或不引用)是适当的
  • 文件-系统命令通常用于接收文件路径。在这种情况下,您完全可以跳过数据加载,只需传递文件名即可

可以通过一排吗?像
input.bed[1,]
?我试着传递文件路径,它成功了。但我可能需要将文件逐行传递给程序,而不是作为一整组行。。。当我尝试
input.bed[1,]
时,它不起作用。您调用的
bedToPsl
实用程序需要一个
.bed
文件作为参数,而不是读入数据框版本。调用应该是
bedToPsl hg38.chom.size lama_filtered.bed inp_hg38.psl
(或者类似的东西)。在使用
bedToPsl
实用程序进行处理之前,您是否打算修改
.bed
文件?确实如此。然而,我意识到我的算法要求我每次将.bed文件的一行传递到
BedtoPsl
。这是否意味着我必须创建多个.bed文件,每行一个?有没有一种方法可以解决这个问题?我的目的是做一个循环,并将我读取为数据帧的每一行input.bed传递…@shadow.t-我不知道您正在使用的实用程序,但我希望您编写一个循环,其中R将为每一行创建一个.bed文件,然后调用传递文件名的实用程序。您可以使用/tmp目录来确保不会产生大量需要清理的垃圾文件。
/usr/local/.../bedToPsl c("chr1","chr1","chr1") ...