2012-07-31 90 views
3

問題:傭工使用GDATA路徑規範使用R包時GDATA

讀取一個.xls爲R時失敗,我有一些.xls的,我想讀入R.我能夠做到這一點使用read.xlsgdata包,但幫助函數sheetNamessheetCount失敗 - 我想了解我做錯了什麼,以便我可以使用它們,因爲它們將非常有用。

require(gdata) 
fp <- file.path('~/data/first.xls') 

當我知道紙張的結構,我能夠在我的預期的數據表指向它,Perl腳本運行良好:

firstdata <- read.xls(fp, sheet=2) 

,我有我的數據...在firstdata

但是,在相同的工作表中,幫手失敗了。

我發現自己在excel中打開.xls,找出它們,然後使用read.xls(fp, sheet=N)加載到R中 - 這不是一場災難,但它也不是最理想的。

特別是,當紙張是不是我自己的,我需要它們的信息之前,我可以在read.xls()設置sheet=N,輔助功能sheetNamessheetCount將是非常有用的,但是他們失敗了 - 爲什麼?

sheetCount(fp) 

> sheetNames(fp) 
Error in read.table(tc, as.is = TRUE, header = FALSE) : 
    no lines available in input 
In addition: Warning message: 
running command ''/usr/bin/perl'  '~/R/wd/raRpackages/gdata/perl/sheetNames.pl' '~/data/first.xls'' had status 2 
Unable to open file '~/data/first.xls'. 

和:

> sheetCount(fp) 
Error in read.table(tc, as.is = TRUE, header = FALSE) : 
    no lines available in input 
In addition: Warning message: 
running command ''/usr/bin/perl'  '~/R/wd/raRpackages/gdata/perl/sheetCount.pl' '~/data/first.xls'' had status 2 
Unable to open file '~/data/first.xls'. 

有點擺弄之後,我(很偶然)發現,使用完整路徑來解決這個問題:

fp2 <- file.path("/Users/ricardo/data/first.xls") 
sheetcount(fp2) 
[1] 13 

回答

3

它看起來像~ ISN不會擴展到您的主目錄。這個擴展通常由shell完成,所以R可能不會這樣做,perl肯定不會。

而是使用Perl程序中的顯式路徑或$HOME$ENV{HOME}

+0

+1謝謝。這確實解決了問題。作爲一般規則,人們應該選擇明確的途徑來避開這些陷阱? – ricardo 2012-07-31 19:59:24