如何在R中使用混合引号执行awk调用?

如何在R中使用混合引号执行awk调用?,r,awk,R,Awk,我需要从R到运行awk,以确保它始终具有固定的宽度。像这样: $ cat -e file 1$ 12$ 123$ 1234$ $ awk '{printf "%-10s\n", $0}' file | cat -e 1 $ 12 $ 123 $ 1234 $ 12345 $ 然而,我在R内部做这件事有困难。处理类似的事情,但它似乎对我不起作用 > ' awk \'{printf "%-180s\n", $0}\' file '

我需要从R到运行
awk
,以确保它始终具有固定的宽度。像这样:

$ cat -e file
1$
12$
123$
1234$
$ awk '{printf "%-10s\n", $0}' file | cat -e
1         $
12        $
123       $
1234      $
12345     $
然而,我在R内部做这件事有困难。处理类似的事情,但它似乎对我不起作用

> ' awk \'{printf "%-180s\n", $0}\' file '
[1] " awk '{printf \"%-180s\n\", $0}' file "
> system(' awk \'{printf "%-180s\n", $0}\' file ')
awk: cmd. line:1: {printf "%-180s
awk: cmd. line:1:         ^ unterminated string
awk: cmd. line:1: {printf "%-180s
awk: cmd. line:1:         ^ syntax error

我还尝试了
系统(“awk'{printf\“%-180s\n\”,$0}'文件”)
,但出现了完全相同的错误。我不确定为什么会失败,但这似乎与混合报价有关。有没有办法让这一切顺利进行

这个想法是正确的,您只需在
\n
中转义
\
。因为它是由
printf()
内部
awk
处理的,所以您需要对它进行转义,让它被逐字处理

system("awk '{printf \"%-10s\\n\",$0}' file")
或者使用变量

awkcommand <- "awk '{printf \"%-10s\\n\",$0}' file"
system(awkcommand)

awkcommand这完全把我吓跑了。你是说R在不调用系统命令的情况下无法执行此操作吗?嗯,我太傻了,现在错误消息更有意义了。。。谢谢