私は bash スクリプトを使用して R スクリプトを作成および実行しています。RI に習熟していなかったので、bash スクリプトにループと条件を記述し、それを R スクリプトまたは「ヒア ドキュメント」に変換しました...ご想像のとおり、そうやって作ったR_scriptはものすごく長くて読みづらくなってしまうので… Rでループや条件の書き方を学んでいるのですが、system()というコマンドにいくつか難点があったので、どうにかシェルスクリプトが必要だなと思いました。引用とエスケープに夢中になりたくなかった... ;-) 私が最初に直面した問題の 1 つは、これでした: Rarr="file_1", "file_2", "file_3"
R_script に挿入したかったので、この eccのような変数を宣言したかったのです。
cat>my_R_script.R<<EOF
my_arr<-c(${Rarr})
do something with my_arr
EOF
file_names が引用符で囲まれていない場合、R は file_names という名前のオブジェクトが見つからないというメッセージを表示するため、引用符が必要です。
配列定義のコンマ区切り要素で最初の解決策に従おうとしましIFS="" ,""
たがRarr="${arr[*]}";echo "${Rarr}"
、 arr の要素が ${IFS} の最初の文字だけで区切られているようです...私の場合、それらはによって区切られます"
方法はありますかこれを避けるには?
基本的に私の質問は、シェルにすべての文字を考慮するように強制する方法${IFS}
ですか?
とにかく、私の問題に対する2つの回避策を見つけました..最初の
arr=($(ls -1 | tail))
new_IFS="\" ,\""
Rarr=${arr[0]}
for ((i=1;i<${#arr[@]};i++))
do
Rarr="${Rarr}${new_IFS}${arr[$i]}"
#echo "${Rarr}"
done;
Rarr=\""${Rarr}"\"
#echo ${Rarr}
および別のパラメーター置換...しかし、私の問題に対する直接的な解決策が存在するかどうかを知りたい
よろしくお願いします。