web-dev-qa-db-ja.com

Rで開く前にファイルサイズを確認する方法

Rにロードする前にファイルのサイズを確認するにはどうすればよいですか?

例えば:

http://math.ucdenver.edu/RTutorial/titanic.txt

最適なコマンドを使用して、ファイルのサイズに基づいてファイルを開きたいのですが。

19
Rhodo
library(RCurl)
url = "http://math.ucdenver.edu/RTutorial/titanic.txt"
xx = getURL(url, nobody=1L, header=1L)
strsplit(xx, "\r\n")
8
Anthony Damico

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
24
Andrie

サイズを知る前にファイルをダウンロードしたくない場合は、次のような方法を試すことができます。

注:これは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"
_
1
neerajt