2014-09-15 4 views
-2

Я проверил похожие темы и попытался соответственно, но все еще сталкивался с проблемой.Как передать путь каталога linux к функции

Моя функция:

pollutantmean("/root/specdata","","") 
pollutantmean <- function(directory, pollutant, id = 1:332) { 

    ## Get a list of filenames 
    filenames <- list.files(path=directory, pattern="*.csv") 

    ## Initialize a vector to hold values 
    vals <- vector() 

    ## Loop over the passed id's 
    for(i in id) { 

     ## Pad the i to create a filename 
     filename <- sprintf("%03d.csv", i) 
     filepath <- paste(directory, filename, sep="/") 

     ## Load the data 
     data <- read.csv(filepath) 

     ## Select our column 
     d <- data[,pollutant] 

     ## Ignore NAs 
     d <- d[!is.na(d)] 

     ## append to our vector 
     vals <- c(vals, d) 
    } 

    ## Return the value rounded to 3 dec places 
    round(mean(vals), 3) 
} 

ошибка:

pollutantmean <- function("/root/specdata", "nitrate", id = 1:332) { 
## Error: unexpected string constant in "pollutantmean <- function("/root/specdata"" 
+0

Я не могу воспроизвести вашу ошибку. У вас есть странная цитата? – Hugh

+0

@ Хью: Вы можете уточнить, что вы имеете в виду? – user123

+1

Итак, я предполагаю, что (где-то) вы ставили цитату '' 'перед тем, как набирать' pollutantmean'. Но это сложно сказать. Можете ли вы поместить точные команды, которые вы сделали, что вызвало эту ошибку? – Hugh

ответ

1

Попробуйте следующие функции. Он хорошо работает:

dirfn = function(dirname){ 
    print(getwd()) 
    setwd(dirname) 
    print(getwd()) 
} 
+0

попробовал это, выполнение выше кода напрямую не дает никакого результата, а при передаче 'dirfn (" \ root ")' давать ошибку 'dirfn (" \ root ") Ошибка : не удалось найти функцию "dirfn" ' – user123

+0

D id вы вставляете выше функции сначала в командной строке R. Там функция должна быть найдена. Возможно, вы не сможете использовать cd для/root, если у вас недостаточно прав для перехода в этот каталог. Попробуйте создать папку «temp» в домашней папке (команда «mkdir temp» в командной строке linux), а затем дать команду в приглашении R: dirfn («temp»). – rnso

+1

Также в linux путь со слэшем, а не с обратной косой чертой: try '/ root' – rnso