メモ
環境
- MacOS 10.15.4
- R 3.6.3
エラー
install.package("rstan")
こんなえらー
unistd.h:727:31: error: unknown type name 'uuid_t'; did you mean 'uid_t'?
対策
RからこれでOK
install.packages("Rcpp", repos="https://RcppCore.github.io/drat")
メモ
install.package("rstan")
こんなえらー
unistd.h:727:31: error: unknown type name 'uuid_t'; did you mean 'uid_t'?
RからこれでOK
install.packages("Rcpp", repos="https://RcppCore.github.io/drat")
RStudioを好んで使っています。
Mac版RStudioはHomeBrewでインストールすることができます
brew cask install rstudio
この時、アプリケーションフォルダ内にRStudioのアイコンが表示されます。
このアイコンをクリックして起動すると、Bashシェルの環境変数を読み込んでくれません。
自分の場合、データフォルダをDATA環境変数に入れることにより、大学で使っている
サーバのデータフォルダとの物理ディレクトリの違いを吸収するようにしています。
例えば
data.file<-paste(Sys.getenv("DATA"),"/sample.txt",sep="")
こんな感じで記述しておけば、
サーバでは /work/user/data/sample.txtのディレクトリにあるファイル
ローカルPCでは /home/user/data/sample.txtのディレクトリにあるファイルでも、
環境変数DATAにサーバでは/work/user/data/、ローカルPCでは/home/user/data/
を設定しておけば、プログラムを変更する必要がありません。
しかし、Rstudioを入れたそのままではこの環境変数が使えません。
これを解決するには、~/.Renvironに環境変数を記述しておけばOKです。
~/.Renviron
DATA=${HOME}/data
mxnetのインストールがエラーになるのでその対処方法
mxnetを使用する際に,インストール方法が公式サイトにも書いているのですが,
その方法ではインストール時にエラーが出ます。使っている環境がMacだからなのかもしれませんが。。
この環境で下記コマンドでインストール
> install.packages("mxnet", type = "el-capitan.binary") Installing package into ‘/usr/local/lib/R/3.4/site-library’ (as ‘lib’ is unspecified) Warning in install.packages : package ‘mxnet’ is not available (for R version 3.4.3)
どうやらVersionがあっていないようでインストールできないようです。
ググっていろいろなやり方を試したのですがダメ。
> cran <- getOption("repos") > cran["dmlc"] <- "https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/" > options(repos = cran) > install.packages("mxnet") Installing package into ‘/usr/local/lib/R/3.4/site-library’ (as ‘lib’ is unspecified) URL 'https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/src/contrib/mxnet_0.10.1.tar.gz' を試しています Warning in install.packages : cannot open URL 'https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/src/contrib/mxnet_0.10.1.tar.gz': HTTP status was '404 Not Found' Error in download.file(url, destfile, method, mode = "wb", ...) : URL 'https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/src/contrib/mxnet_0.10.1.tar.gz' を開けません Warning in install.packages : download of package ‘mxnet’ failed
> install.packages("mxnet", type = "mac.binary") Installing package into ‘/usr/local/lib/R/3.4/site-library’ (as ‘lib’ is unspecified) Warning in install.packages : unable to access index for repository https://cran.rstudio.com/bin/macosx/contrib/3.4: URL 'https://cran.rstudio.com/bin/macosx/contrib/3.4/PACKAGES' を開けません Warning in install.packages : unable to access index for repository https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/bin/macosx/contrib/3.4: URL 'https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/bin/macosx/contrib/3.4/PACKAGES' を開けません package ‘mxnet’ is available as a source package but not as a binary Warning in install.packages : package ‘mxnet’ is not available (as a binary package for R version 3.4.3)
> install.packages("mxnet", type = "el-capitan.binary") Installing package into ‘/usr/local/lib/R/3.4/site-library’ (as ‘lib’ is unspecified) Warning in install.packages : package ‘mxnet’ is not available (for R version 3.4.3)
まずOpenCVをインストール
brew install opencv
OpenBlasも入れます
brew install openblas
最後にソースコードからダウンロードしてインストールします
git clone --recursive https://github.com/dmlc/mxnet cd mxnet cp make/osx.mk config.mk make -j4 make rpkg
これでインストールが終わっています
$ R R version 3.4.3 (2017-11-30) -- "Kite-Eating Tree" Copyright (C) 2017 The R Foundation for Statistical Computing Platform: x86_64-apple-darwin17.4.0 (64-bit) R は、自由なソフトウェアであり、「完全に無保証」です。 一定の条件に従えば、自由にこれを再配布することができます。 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 R は多くの貢献者による共同プロジェクトです。 詳しくは 'contributors()' と入力してください。 また、R や R のパッケージを出版物で引用する際の形式については 'citation()' と入力してください。 'demo()' と入力すればデモをみることができます。 'help()' とすればオンラインヘルプが出ます。 'help.start()' で HTML ブラウザによるヘルプがみられます。 'q()' と入力すれば R を終了します。 > library(mxnet) >
これで使えそうです。多分。
大学のサーバでどうしてもJupyter Notebookが動かしたいのでメモ。
データをSQLiteで管理しており,これのサイズが10Gを超え始めた。計算などは大学のサーバで行なっているのであるが,RやJupyterなどビジュアルなツールを使いたい時にはいちいちローカルのPCへSQLiteをコピーするのが大変。
以前Xサーバを使ったリモートでの起動を試したが,どうも使いづらい。
Macからだと,XQuartzをあらかじめMacにインストールしておき,
以下のSSHコマンドで接続し,
[mac] $ ssh -Y remotehost
Jupyterを起動するだけ。
[server] $ jupyter notebook
これで,リモートサーバでFirefoxが立ち上がり,MacのXQuartzで表示される。
しかしこれがいかんせん使いづらい。遅いし,サーバ側のFirefoxなので見た目も悪く,日本語入力も一苦労。
まずはここを参考に設定する。
$ jupyter notebook --generate-config
~/.jupyter/jupyter_notebook_config.pyを編集。ポートが8080が空いている場合には以下のように指定する。
c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.open_browser = False c.NotebookApp.port = 8080
Rも使いたいので,ここを参考にRを起動してインストール。
install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools')) devtools::install_github('IRkernel/IRkernel') IRkernel::installspec()
$ jupyter notebook [I 17:43:07.065 NotebookApp] Serving notebooks from local directory: /tmp [I 17:43:07.066 NotebookApp] 0 active kernels [I 17:43:07.066 NotebookApp] The Jupyter Notebook is running at: [I 17:43:07.066 NotebookApp] http://0.0.0.0:8080/?token=37e418b82da8472bf89798f70a92dda90003f61509xxxxx
起動時に現れるこれから,
http://0.0.0.0:8080/?token=37e418b82da8472bf89798f70a92dda90003f61509xxxxx
以下のようにPCのブラウザのアドレスバーに打ち込めばOK
http://server:8080/?token=37e418b82da8472bf89798f70a92dda90003f61509xxxxx
大学のサーバのGCCが6.2だったのでメモ。
RMeCabのインストール
> install.packages("RMeCab", repos = "http://rmecab.jp/R")
エラーになる。
RMeCab.cpp:89:11: error: narrowing conversion of '229' from 'int' to 'char' inside { } [-Wnarrowing] 0}; //形容詞
GCC6だとエラーになるので、GCC5台にしないと駄目です。
因みにソースコードはinstall.packageのときにオプションを付けると消されないでローカルファイルに残ります。
> install.packages("RMeCab", repos = "http://rmecab.jp/R",keep_outputs=T)
スーパーユーザ権限のないサーバにソースコードからインストールしてみたのでそのメモ
大学のサーバなど勝手になんでもインストールできない環境ではローカルのユーザ環境に色々とインストールしないといけません。今回はRをインストールしてみました
cranからRのソースコードをダウンロードしコンパイルします
wget https://cran.r-project.org/src/base/R-3/R-3.3.2.tar.gz tar zxvfp R-3.3.2.tar.gz cd R-3.3.2 mkdir builddir cd builddir ../configure --prefix=/work/$USER/local --with-cairo --with-jpeglib --with-readline --with-tcltk --with-blas --with-lapack --enable-R-profiling --enable-R-shlib --enable-memory-profiling
エラーになります
checking if bzip2 version >= 1.0.6... no checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required
足りないライブラリを入れていきます
。
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz tar zxvfp bzip2-1.0.6.tar.gz cd bzip2-1.0.6
このあたりを参考にMakefileを修正しておきます。CFLAGSに-fPICを追加します
CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES)
makeします
make -f Makefile-libbz2_so make clean make make -n install PREFIX=/work/$USER/local make install PREFIX=/work/$USER/local
Rのconfigを再開します。この際、オプションにライブラリのパスを入れます
../configure --prefix=/work/$USER/local --with-cairo --with-jpeglib --with-readline --with-tcltk --with-blas --with-lapack --enable-R-profiling --enable-R-shlib --enable-memory-profiling CPPFLAGS="-I/work/$USER/local/include" LDFLAGS="-L/work/$USER/local/lib"
またエラーです
checking for lzma_version_number in -llzma... no configure: error: "liblzma library and headers are required"
xzライブラリを入れます。
wget http://tukaani.org/xz/xz-5.2.3.tar.gz tar zxvfp xz-5.2.3.tar.gz cd xz-5.2.3 ./configure --prefix=/work/$USER/local make install
Rのconfigを再開
../configure --prefix=/work/$USER/local --with-cairo --with-jpeglib --with-readline --with-tcltk --with-blas --with-lapack --enable-R-profiling --enable-R-shlib --enable-memory-profiling CPPFLAGS="-I/work/$USER/local/include" LDFLAGS="-L/work/$USER/local/lib"
またエラー
checking for pcre_fullinfo in -lpcre... no checking whether PCRE support suffices... configure: error: pcre >= 8.10 library
pcreライブラリを入れる。ここで、UTF8を有効にしておきます
wget https://ftp.pcre.org/pub/pcre/pcre-8.10.zip unzip pcre-8.10.zip cd pcre-8.10 ./configure --prefix=/work/$USER/local/ --enable-utf8 make install
Rのconfigを再開
checking if libcurl is version 7 and >= 7.28.0... no configure: error: libcurl >= 7.28.0 library and headers are required with support for https
またエラーです
wget --no-check-certificate https://curl.haxx.se/download/curl-7.47.1.tar.gz tar zxvfp curl-7.47.1.tar.gz cd curl-7.47.1 ./configure --prefix=/work/$USER/local make -j3 make install
Rのconfigを再開
../configure --prefix=/work/$USER/local --with-cairo --with-jpeglib --with-readline --with-tcltk --with-blas --with-lapack --enable-R-profiling --enable-R-shlib --enable-memory-profiling CPPFLAGS="-I/work/$USER/local/include" LDFLAGS="-L/work/$USER/local/lib"
成功しました
make
またエラー。。
/work/xxxxx/work/R-3.3.2/builddir/bin/exec/R: /usr/lib64/libgomp.so.1: version `GOMP_4.0' not found (required by /work/xxxxx/work/R-3.3.2/builddir/lib/libR.so)
これは使っているGCCとそのライブラリがずれていたためでした。
LD_LIBRARY_PATHに使っているGCCのライブラリパスを前の方に追加し再度make
make make install
これでOKです。
Rで株価データの取得のメモ
quantmodは素晴らしい!!
DowはYahoo.comから取得します。srcに”yahoo”をセット
library(quantmod) # DOW dow<-new.env() dow.name<-getSymbols("DOW",env=dow,src="yahoo", from='2016-01-01',to='2016-06-30') dow.prices<-dow[[dow.name]] names(dow.prices)<-c("Open","High","Low","Close","Volume","Adjusted")
デフォルトの名前では使いづらいので、必要なデータを別のデータフレームに入れて名前をつけます。
> dow.prices["2016-02-01::2016-03-01"] Open High Low Close Volume Adjusted 2016-02-01 41.58 42.77 41.22 42.58 8717200 41.44578 2016-02-02 44.14 45.18 42.82 45.03 16411000 43.83052 2016-02-03 45.73 47.05 45.70 46.74 16750300 45.49497 2016-02-04 46.93 47.64 46.73 47.39 13177300 46.12765 2016-02-05 47.48 47.50 46.41 46.69 8030600 45.44630 2016-02-08 46.46 46.94 45.20 46.23 13511300 44.99855 2016-02-09 45.71 47.20 45.71 46.60 8201200 45.35870 ..
取得するデータはxts型ですので扱いやすいです
日本株はsrcにyahoojとYahooJapanを指定するだけです
jpn<-new.env() jpn.name<-getSymbols("6758",env=jpn,src="yahooj", from='2016-01-01',to='2016-06-30') jpn.prices<-jpn[[jpn.name]] names(jpn.prices)<-c("Open","High","Low","Close","Volume","Adjusted")
> jpn.prices["2016-02-01::2016-03-01"] Open High Low Close Volume Adjusted 2016-02-01 2923.0 2924.0 2700.0 2836.0 32250000 2836.0 2016-02-02 2779.0 2812.0 2662.0 2692.5 18567800 2692.5 2016-02-03 2626.0 2654.5 2610.0 2623.5 15916000 2623.5 2016-02-04 2600.0 2657.0 2600.0 2620.5 10369200 2620.5 2016-02-05 2592.0 2638.5 2580.5 2615.0 8591500 2615.0 2016-02-08 2560.0 2592.0 2515.0 2569.0 10796100 2569.0 2016-02-09 2424.0 2444.0 2356.5 2388.5 13666800 2388.5
> names(jpn.prices)<-c("Open","High","Low","Close","Volume","Adj") names(jpn.prices) <- c("Open", "High", "Low", "Close", "Volume", でエラー: NULL に対して属性を設定しようとしました
取得方法がどうやら変わったのでしょうか?
下記のやり方でとれるようです
> library(quantmod) > env<-getSymbols("9434.T", src="yahooj", from="2018-12-19",auto.assign=F) > jpn<-as.data.frame(env) > names(jpn)<-c("Open","High","Low","Close","Volume","Adjusted") > head(jpn) Open High Low Close Volume Adjusted 2018-12-19 1463 1464 1282 1282 271497800 1282 2018-12-20 1183 1310 1176 1296 106361400 1296 2018-12-21 1279 1375 1275 1316 65040600 1316 2018-12-25 1307 1320 1240 1271 36914400 1271 2018-12-26 1300 1315 1288 1304 12116500 1304 2018-12-27 1350 1356 1325 1354 19368800 1354
すぐ忘れるのでメモ
Rの軽量Webフレームワークshiny。Rで計算した結果をWebで簡単に表現できるので非常に便利です。
RStudioを使ってデバッグすればいいのでしょうが、サーバサイドでいきなりコーディングし、訳の分からないエラーが発生した時には非常に困ります。
簡単にデバッグする方法は以下のとおりです
Chromeのメニューから「その他のツール」ー「デベロッパーツール」を選択します。
そのメニューからConsoleを表示させると、Javascriptでサーバ側のエラーを表示してくれます。
これは非常に便利。
ソースコード上にデバッグプリントを埋め込んで変数の内容を確認するには
cat(file=stderr(),"debug=",value)
こんな感じでserver.R上に記述します。これで /var/log/shiny-server以下のファイルに出力されます。
Rはスクリプト言語なので、エラーになる直前までは普通に実行してくれますので、エラーとなる直前にデバッグプリントを仕込むと良いでしょう
H2Oパッケージを触っていてエラーが出たのでメモ
まずここを参考にインストールします
cmake
wget https://cmake.org/files/v3.6/cmake-3.6.1.tar.gz tar zxvfp cmake-3.6.1.tar.gz cd cmake-3.6.1 ./configure make make install
h2o
wget https://github.com/h2o/h2o/archive/v2.0.1.tar.gz tar zxvfp v2.0.1.tar.gz cd h2o-2.0.1/ cmake . make make install
設定
mkdir /usr/local/etc/h2o/ cd /usr/local/etc/h2o/ openssl genrsa 2048 > cert.key openssl req -new -key cert.key > cert.csr openssl x509 -days 3650 -req -signkey cert.key < cert.csr > cert.pem touch /usr/local/etc/h2o/error-log
sudo /usr/local/bin/h2o -m daemon -c /usr/local/etc/h2o/h2o.conf
ここのサンプルを実行してみます
library("h2o") localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, nthreads=-1) cfData<-h2o.importFile(localH2O,path="https://raw.githubusercontent.com/ozt-ca/tjo.hatenablog.samples/master/r_samples/public_lib/jp/conflict_sample.txt")
ここでエラー発生
Error: is.character(key) && length(key) == 1L && !is.na(key) is not TRUE
どうやら、h2oの仕様が変わったようです。こちらを参考に修正します
cfData<-h2o.importFile(path="https://raw.githubusercontent.com/ozt-ca/tjo.hatenablog.samples/master/r_samples/public_lib/jp/conflict_sample.txt") res.err.dl<-rep(0,100) numlist<-sample(3000,100,replace=F) for(i in 1:100){ cf.train <- cfData[-numlist[i],] cf.test <- cfData[numlist[i],] res.dl <- h2o.deeplearning(x = 1:7, y = 8, data = cf.train, activation = "Tanh",hidden=rep(20,2)) pred.dl <- h2o.predict(object=res.dl,newdata=cf.test[,-8]) pred.dl.df <- as.data.frame(pred.dl) test.dl.df <- as.data.frame(cf.test) res.err.dl[i] <- ifelse(as.character(pred.dl.df[1,1])==as.character(test.dl.df[1,8]),0,1) }
またまたエラー
Error in h2o.deeplearning(x = 1:7, y = 8, data = cf.train, activation = "Tanh", : unused argument (data = cf.train)
仕様をみると、また変わっていました。以下のように修正します
res.dl <- h2o.deeplearning(x = 1:7, y = 8, training_frame = cf.train, activation = "Tanh",hidden=rep(20,2))
続けます
sum(res.err.dl)
これでうまく実行できました
sudo kill -TERM `cat /usr/local/etc/h2o/pid-file`
仕様がよく変わるので、メジャーバージョンアップ時は要注意です
こちらを参考にRでWord2Vecを実行してみたが、ちょっとハマったのでメモ
必要なパッケージをインストールします
install.packages("devtools") library(devtools) install.packages("tsne") install.packages("magrittr") install.packages("stringi") library(tsne) library(magrittr) library(stringi) devtools::install_github("bmschmidt/wordVectors")
青空文庫から夏目漱石の三四郎をテストデータとします
$ wget http://www.aozora.gr.jp/cards/000148/files/794_ruby_4237.zip $ unzip 794_ruby_4237.zip $ nkf -w --overwrite sanshiro.txt $ mecab -Owakati sanshiro.txt -o data.txt
UTF8へ文字コードを変換しておきます。ちなみにmecabはUTF8のものをインストールしておいてください
Rから実行します
library(devtools) library(wordVectors) library(magrittr) library(tsne) library(magrittr) wordVectors::train_word2vec( train_file = "data.txt", output_file = "model.txt", vectors = 200, window = 10, threads = 3 )
threadsはCPU数−1あたりで設定します
これを実行すると
type.convert(data[[i]], as.is = as.is[i], dec = dec, numerals = numerals, でエラー: '(; ; { ֺ 3:q :ף 9<9a><99> 8 ( c<91>:' に不正なマルチバイト文字があります 追加情報: 警告メッセージ: 1: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 1 appears to contain embedded nulls 2: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 2 appears to contain embedded nulls 3: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 3 appears to contain embedded nulls 4: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 4 appears to contain embedded nulls 5: utils::read.table(filename, header = F, skip = 1, colClasses = c("character", で: line 5 appears to contain embedded nulls 6: utils::read.table(filename, header = F, skip = 1, nrows = 1, で: line 1 appears to contain embedded nulls
このようなエラーが出ます
この場合には気にせずRで
word2vec_model <- read.vectors("model.txt",binary=TRUE)
これで読み込み直してやります。
> nearest_to(word2vec_model,word2vec_model[["三四郎"]]) 三四郎 与次郎 じっと 秋 ますます 勇気 見合わせ おかしく 次 3.330669e-16 4.131871e-01 4.873280e-01 4.886600e-01 4.895344e-01 4.948309e-01 5.033392e-01 5.220245e-01 5.278047e-01 腹の中 5.329964e-01 > nearest_to(word2vec_model,word2vec_model[["東京"]]) 東京 生まれ これから ずっと 変る おれ いなか うえ いっそ 5.551115e-16 3.663971e-01 3.754231e-01 3.864140e-01 4.024397e-01 4.056571e-01 4.078920e-01 4.080678e-01 4.103215e-01 文芸時評 4.340431e-01
ま、こんなもんです