我正在努力学习一些小而重要的语法,试图在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
我希望我需要在文件名中的某处转义某些东西,但我不知道在哪里或如何。
答案 0 :(得分:2)
这将是我的第一行R代码。 :)
我想问题是你在文字字符串中写了filename变量。您应首先使用字符串连接构建awk命令,然后将其传递给system()
,如:
system(paste("awk 'NR==2' ", filename), intern=TRUE)
答案 1 :(得分:0)
尝试用其绝对格式替换~/path/filename
。例如/home/user/path/filename
。