结合R + awk + bash命令
我想结合awk和R语言。问题是我在指定的目录中有一组* .txt文件,我不知道文件头部的长度。在某些情况下,我必须跳过25行,而在其他情况下,我必须跳过27等等。所以我想输入一些awk命令来获取跳过的行数。一旦我有这个价值,我可以开始R.处理数据结合R + awk + bash命令
此外,在R文件结合我为r的庆典,所以我的代码如下所示:
!/usr/bin/env Rscript
...
argv <- commandArgs(T)
**error checking...**
import_file <- argv[1]
export_file <- argv[2]
**# your function call**
format_windpro(import_file, export_file)
在哪里,我怎么能输入我的awk命令。谢谢!
我试着做你告诉我关于awk命令的信息,但仍然出现错误。该程序不能识别我的命令,所以我不能输入要跳到我的函数的行数。这里是我的代码:
** n第< - 粘贴( '$(grep的-n 'M/S' import_file | awk的-F “:” '{$打印1}')')
n第< - 扫描(管道(nline),安静= T)**
我在第一列寻找模式m/s,以便知道我的标题文本在哪里。我在w7下使用R。
运行外部程序除了使用system("awk ...", intern=TRUE)
的文森特的提示,你也可以用pipe()
功能是普通的文本连接的一部分:
R> sizes <- read.table(pipe("ls -l /tmp | awk '!/^total/ {print $5}'"))
R> summary(sizes)
V1
Min. : 0
1st Qu.: 482
Median : 4096
Mean : 98746
3rd Qu.: 13952
Max. :27662342
R>
在这里,我将命令编入awk
,然后读取awk
的所有输出,也可能是单行:
R> cmd <- "ls -l /tmp | awk '!/^total/ {sum = sum + $5} END {print sum}'"
R> totalsize <- scan(pipe(cmd), quiet=TRUE)
R> totalsize
[1] 116027050
R>
您可以使用system
从R.
system("gawk --version", intern=TRUE)
但我在哪里使用它,在我的脚本或我的SAmpleStatus.r文件中。它是如何运行的?你能更精确一点吗?谢谢 – JPV 2012-03-02 12:05:21
你可以在你的R脚本中使用它来调用你的awk脚本(当然你需要替换'--version');它会返回awk脚本的输出,作为字符串的一个向量。 – 2012-03-02 12:17:26
++ ve,谢谢你的好回答德克先生。 – RavinderSingh13 2017-12-18 06:13:45