Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中嵌套python_Python_R_Bash_Syntax_Nested - Fatal编程技术网

在R中嵌套python

在R中嵌套python,python,r,bash,syntax,nested,Python,R,Bash,Syntax,Nested,我想使用R应用python代码。但是,由于R语法转义引号,我得到了一个错误。这段代码直接在bash中工作 df <- 'anm1 sam1 TT GG AA BB' df <- read.table(text=df, header=F) write.table(df, "df.txt", col.names=F, row.names=F, quote=F) df文件“”,第1行 >导入系统;打印(' > ^ >SyntaxErro

我想使用R应用python代码。但是,由于R语法转义引号,我得到了一个错误。这段代码直接在bash中工作

df <- 'anm1 sam1 TT GG AA BB'
df <- read.table(text=df, header=F)
write.table(df, "df.txt", col.names=F, row.names=F, quote=F)
df文件“”,第1行
>导入系统;打印('
>                           ^
>SyntaxError:扫描字符串文字时下线

在这里使用语法的一些想法?

在尝试运行文本之前,您应该使用转义文本,特别是如果文本中可能存在变量数据。但是,您至少需要转义文本中的反斜杠:

system("python -c \"import sys; print('\\n'.join(' '.join(c) for c in zip(*(l.split() for l in sys.stdin.readlines() if l.strip()))))\" < df.txt > dfout.txt")
system(“python-c\”导入sys;打印('\\n.join(''.join(c)表示zip中的c(*(l.split()表示sys.stdin.readlines()如果l.strip())))\”dfout.txt)
如果使用,shQuote将自动完成,您可以使用内置功能进行输入重定向

cmd <- "python"
args <- c(
    "-c",
    "\"import sys; print('\\n'.join(' '.join(c) for c in zip(*(l.split() for l in sys.stdin.readlines() if l.strip()))))\""
)
system2(cmd, args, stdout="dfout.txt", stdin="df.txt")

cmd提供的答案是否有用?如果它解决了您的问题,请标记为已接受,或者如果在某些方面不正确,请告诉我。谢谢。
system("python -c \"import sys; print('\\n'.join(' '.join(c) for c in zip(*(l.split() for l in sys.stdin.readlines() if l.strip()))))\" < df.txt > dfout.txt")
cmd <- "python"
args <- c(
    "-c",
    "\"import sys; print('\\n'.join(' '.join(c) for c in zip(*(l.split() for l in sys.stdin.readlines() if l.strip()))))\""
)
system2(cmd, args, stdout="dfout.txt", stdin="df.txt")