2014-07-16 104 views
1

我想在R來使用該系統()命令來發送:引系統命令中的R

system("awk -F "\"* ,\"*" 'NR==1 || $4 == 2925204' input.csv > output.csv") 

到終端上我的MAC。在終端中,我可以運行:

awk -F "\"* ,\"*" 'NR==1 || $4 == 2925204' input.csv > output.csv 

不幸的是,我不確定如何使R正確讀取引號。任何人都可以幫我嗎?

請注意,我必須在第一個星號後添加一個額外的空格,以便stackoverflow的文本編輯器將正確打印此文章。

+0

你需要逃避反斜槓和雙引號,即有'... -F \ 「\\\」 * ...' – eddi

+0

試試'系統( 「awk -F'\」*,\「*''NR == 1 || $ 4 == 2925204'input.csv> output.csv」)' –

回答

1

將awk的Field Separator值括在單引號內。

system("awk -F '\"* ,\"*' 'NR==1 || $4 == 2925204' input.csv > output.csv") 
1

如果您已經在R,爲什麼不在R中完成整個工作? R具有專用功能,與Awk相比,它更適合解析CSV。

在這裏你去:

df <- read.csv('input.csv') 
rest <- df1[-1,] 
out <- rbind(head(df, 1), subset(rest, rest[,4] == 2925204)) 
write.csv(out, 'output.csv', quote=F, row.names=F)