system
可以通过将调用包装cat
并指定为分隔符来获得对输出的外观改进'\n'
,它将输出显示在单独的行上,而不是由字符向量的默认值分隔的空格。这对于像这样的命令非常有用tree
,因为除非用换行符分隔,否则输出的格式几乎没有意义。
比较名为 的示例目录的以下内容test
:
重击
$ tree test
test
├── A1.tif
├── A2.tif
├── A3.tif
├── README
└── src
├── sample.R
└── sample2.R
1 directory, 6 files
Jupyter 笔记本中的 R
system
只是,难以理解的输出:
> system('tree test', intern=TRUE)
'test' '├── A1.tif' '├── A2.tif' '├── A3.tif' '├── README' '└── src' ' ├── sample.R' ' └── sample2.R' '' '1 directory, 6 files
cat
+ system
,输出看起来像 bash:
> cat(system('tree test', intern=TRUE), sep='\n')
test
├── A1.tif
├── A2.tif
├── A3.tif
├── README
└── src
├── sample.R
└── sample2.R
1 directory, 6 files
请注意,对于类似的命令ls
,上面会引入一个换行符,其中输出通常由 bash 中的空格分隔。
您可以创建一个函数来节省一些输入:
> # "jupyter shell" function
> js <- function(shell_command){
> cat(system(shell_command, intern=TRUE), sep='\n')
> }
>
> # brief syntax for shell commands
> js('tree test')