RNetLogoからnlrxに乗り換えるために(2)

f:id:kapibarasenn10:20210301105155j:plain

(1)cmdからnetlogoを走らせる

#JAVA_HOME無し
#PATH to java有り
#java のversion関係なし
# JAVA_HOMEの設定に不明の点がある
# おそらく以下の指摘と関係すると想像される。
#https://github.com/ropensci/nlrx/issues/32

 

#NetLogoのpathを通す.

設定>システム>詳細情報>システムの詳細設定>システムのプロパティ>詳細設定>環境変数>システム環境変数>PATH>編集>新規>C:¥Program Files¥NetLogo 6.0.3

 

netlogo-headless.bat --model "C:\Program Files\NetLogo 6.0.3\app\models\Sample Models\Biology\Wolf Sheep Predation.nlogo" --experiment experiment1 --table "C:\Users\ichij\Desktop\out"

#pathに空白が含まれると認識されない。引用符で囲めば空白が認識される。

 

C:\Program Files\NetLogo 6.0.3>netlogo-headless.bat --model "C:\Program Files\NetLogo 6.0.3\app\models\Sample Models\Biology\Wolf Sheep Predation.nlogo" --experiment experiment1 --table "C:\Users\ichij\Desktop\out"
JAVA_HOME not defined, using java on PATH.
If you encounter errors, set JAVA_HOME or update your PATH to include java.exe.
Exception in thread "main" java.io.FileNotFoundException: C:\Users\ichij\Desktop\out (アクセスが拒否されました。)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:291)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:234)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:123)
at java.base/java.io.FileWriter.<init>(FileWriter.java:66)
at org.nlogo.headless.Main$.path2writer$1(Main.scala:64)
at org.nlogo.headless.Main$.parseArgs(Main.scala:94)
at org.nlogo.headless.Main$.main(Main.scala:12)
at org.nlogo.headless.Main.main(Main.scala)

C:\Program Files\NetLogo 6.0.3>

#まあ何とか走る.

 

(2)nlrx

# 警告メッセージ:
1: grep("@#$#@#$#@", model.code, fixed = TRUE) で:
入力文字列 505 はこのロケールでは不適切です


http://uncorrelated.hatenablog.com/entry/2017/01/22/130231
ウィンドウズ版Rは初期状態では、スクリプトファイルの日本語コードはシフトJISしか扱えない。設定値を確認する場合は options()$encoding を表示する。
1)Rprofileを開いて、
options(encoding = "native.enc")
options(encoding="UTF-8") に変更する。

2)またはRのスクリプトの冒頭に以下をくわえてencodingを変更する.

options(encoding="UTF-8")

 

# 警告メッセージ:
1: readLines(getnl(nl, "modelpath")) で:
入力コネクション 'C:/Program Files/NetLogo 6.1.1/app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo' に不正な入力がありました
2: readLines(getnl(nl, "modelpath")) で:
'C:/Program Files/NetLogo 6.1.1/app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo' で不完全な最終行が見つかりました
3: readLines(getnl(nl, "modelpath")) で:
入力コネクション 'C:/Program Files/NetLogo 6.1.1/app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo' に不正な入力がありました
4: readLines(getnl(nl, "modelpath")) で:
'C:/Program Files/NetLogo 6.1.1/app/models/Sample Models/Biology/Wolf Sheep Predation.nlogo' で不完全な最終行が見つかりました

 

Rコマンド readLines error:netlogo code内の説明記載が認識されず、errorをだした。 
model code を開き、

model-version
"sheep-wolves" "sheep-wolves-grass"
0

@#$#@#$#@

<ー 408行から526行(この間)のテキストを削除した

<!-- 1997 2000 -->
@#$#@#$#@

「不正な入力」「不完全な最終行」のエラーは出なくなった。


#
results <- run_nl_all(nl)
指定されたパスが見つかりません。
util_gather_results(nl, outfile, seed, siminputrow) でエラー:
Temporary output file C:\Users\ichij\AppData\Local\Temp\Rtmpq4J5m5\nlrx_seed_-969504105_row_1_27445db97833.csvnot found. On unix systems this can happen if the default system temp folder is used.
Try reassigning the default temp folder for this R session (unixtools package).
追加情報: 警告メッセージ:
The `path` argument of `write_lines()` is deprecated as of readr 1.4.0.
Please use the `file` argument instead.
This warning is displayed once every 8 hours.

 

#説明はここにある> https://github.com/ropensci/nlrx/issues/10
install.packages('unixtools')
library(unixtools)
set.tempdir("<path-to-temp-dir>")

しかしunixtoolsがlibraryにはないので困って,以下を行った.

#https://stackoverflow.com/questions/17107206/change-temporary-directory

1)nlrxのoutputを受け取るフォルダをdesktopに作り,"out"と名付け,

2)その中に"rtemp"というフォルダを作り,テンポラリーファイルを格納する場所に指定するために,

TMPDIR=C:/Users/ichij/Desktop/out/rtemp
TMP=C:/Users/ichij/Desktop/out/rtemp
TEMP=C:/Users/ichij/Desktop/out/rtemp
を書き込んだファイル(Renviron.site)を
C:/Program Files/R/R-4.0.4/etc
に置く

 

################################

これでRを開き,

install.packages("nlrx")

https://github.com/ropensci/nlrx

のGetStartedを行う.

 

実行中のC:/Users/ichij/Desktop/out/rtempではテンポラリーファイルが次々と更新され,終了すると,"out"に _ lhs.csvファイルが作成される.