Rにロードする前にファイルのサイズを確認するにはどうすればよいですか?
例えば:
http://math.ucdenver.edu/RTutorial/titanic.txt
最適なコマンドを使用して、ファイルのサイズに基づいてファイルを開きたいのですが。
library(RCurl)
url = "http://math.ucdenver.edu/RTutorial/titanic.txt"
xx = getURL(url, nobody=1L, header=1L)
strsplit(xx, "\r\n")
file.info()
を使用する
file.info("data/ullyses.txt")
size isdir mode mtime ctime atime uid gid
data/ullyses.txt 1573151 FALSE 664 2015-06-01 15:25:55 2015-06-01 15:25:55 2015-06-01 15:25:55 1008 1008
次に、size
という列を抽出します。
file.info("data/ullyses.txt")$size
[1] 1573151
サイズを知る前にファイルをダウンロードしたくない場合は、次のような方法を試すことができます。
注:これはMacまたはLinuxでのみ機能します。
_file_url = 'http://math.ucdenver.edu/RTutorial/titanic.txt'
curl_cmd = paste('curl -X HEAD -i', file_url)
system_cmd = paste(curl_cmd, '|grep Content-Length |cut -d : -f 2')
_
上記は、system()
を使用して実行される文字列をまとめたものです。 _curl_cmd
_文字列は、ファイルのヘッダーだけを取得するようにcurlに指示します。
_system_cmd
_文字列は、ヘッダーを解析してファイルサイズだけを抽出するためのいくつかの追加コマンドをパックします。
ここで、system()
を呼び出し、_intern = TRUE
_引数を使用して、Rに出力を保持するように指示します。
_b <- system(system_cmd, intern = TRUE)
## % Total % Received % Xferd Average Speed Time Time Time Current
## Dload Upload Total Spent Left Speed
## 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
## curl: (18) transfer closed
_
ファイルのヘッダーのみをダウンロードし、解析してファイルサイズを取得します。これで、b
がバイト単位のファイルサイズになります。
次に、ファイルを開く方法を決定するか、次のようなわかりやすいものを印刷できます。
_print(paste("There are", as.numeric(b)/1e6, "mb in the file:", file_url))
## [1] "There are 0.055692 mb in the file: http://math.ucdenver.edu/RTutorial/titanic.txt"
_