場合によっては(私はまだRの初心者です!)、複数行の命令を「そのまま」単純な行の命令にマージできないことに気づきました。私が最近オンラインで行ったレッスンにある例を見てみましょう。
> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ pow
+ }
'make.power'関数の定義です。次に、「キューブ」または二乗関数を定義できます
> cube <- make.power(3)
> square <- make.power(2)
次に、まったく同じ構文で1行にmake.powerを定義しようとすると、次のようになります。
> make.power <- function(n) { pow <- function(x) { x^n } pow }
これにより、「make.power ...」に予期しないシンボルが表示されます。これにより、次の1行のコードが機能します。
> make.power <- function(n) { pow <- function(x) { x^n }}
また、複数行に切り替えても機能します。
> make.power <- function(n) {
+ pow <- function(x) {
+ x^n
+ }
+ }
私はかなり混乱していることを認めなければなりません。私の質問は次のとおりです。
- 複数行のコードを1行の命令にマージできないのはなぜですか?
- 関数の最初の複数行の定義では、関数が定義された直後に「pow」関数をリコールする必要があるのはなぜですか。リコールなしの同じコードで問題ないため、これは明らかに重要ではありません。
編集:#Dwinの回答に続いて、次の式が正しいことは次のとおりです。
> make.power <- function(n) { pow <- function(x) { x^n }; pow }
完璧に動作します。そしてこれもそうです:
> make.power <- function(n){; pow <- function(x) {; x^n }; pow }
つまり、「;」のようです。場合によっては(ここでは「}」と2番目の「pow」の間)必須であり、他の場合(「{」と最初の「pow」の間)では必須ではありませんか?