通过R中的system()将预定义的文件名参数传递给awk

时间:2013-09-08 21:59:24

标签: r bash path awk

我正在努力学习一些小而重要的语法,试图在R(OSX,R3.0.1; readLines()和scan()中的system()调用中将预定义的路径和文件名传递给awk完成我需要的东西。

直接在R中使用系统和文件名可以正常工作

system("awk 'NR==2' ~/path/filename", intern=TRUE)

然而

filename<-"~/path/filename"
system("awk 'NR==2' filename", intern=TRUE)

返回令人沮丧的错误

character(0)
attr(,"status")
[1] 2
Warning message:
running command 'awk 'NR==2' filename' had status 2 
awk: can't open file filename
source line number 1

我希望我需要在文件名中的某处转义某些东西,但我不知道在哪里或如何。

2 个答案:

答案 0 :(得分:2)

这将是我的第一行R代码。 :)

我想问题是你在文字字符串中写了filename变量。您应首先使用字符串连接构建awk命令,然后将其传递给system(),如:

system(paste("awk 'NR==2' ", filename), intern=TRUE) 

答案 1 :(得分:0)

尝试用其绝对格式替换~/path/filename。例如/home/user/path/filename