2013-09-08 4 views
-1

Я борюсь с чем-то небольшим, но важным с синтаксисом, пытаясь передать заранее определенный путь и имя файла awk в вызове system() в R (OSX, R3.0.1; readLines() и scan() не могут выполнить то, что мне нужно).Передача предопределенного аргумента имени файла awk через system() в R

Использование системы и имя файла, непосредственно в 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

ни малейшего представления, как это делает R код выглядеть, но я думаю, проблема в том, вы написали 'filename' переменный в буквальном строка. вы можете попробовать, если это работает в вашей системе R: '(вставить (" awk 'NR == 2' ", имя файла), intern = TRUE)' – Kent

+0

Это сделало это. Интересно. Примечание к @konsolebox работает с абсолютным или относительным путем, но абсолютный сам по себе не изменил результат. – beckerhopper

+0

ОК, затем я разместил его как ответ. – Kent

ответ

2

Это была бы моя первая строка кода R. :)

Я думаю, проблема в том, что вы написали переменную имени файла в литеральной строке. Вы должны сначала создать команду AWK с конкатенацией, а затем передать его в system(), как:

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

Попробуйте заменить ~/path/filename на свою абсолютную форму. например /home/user/path/filename.