2016-07-11 3 views
1

Rと基本的な混乱があります。私はRコードのスニペットを持っています。R:割り当てのLHSとRHSに関する混乱と操作の順序

> m <- 1:10 
> m 
[1] 1 2 3 4 5 6 7 8 9 10 
> dim(m) <- c(2,5) 
> m 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 3 5 7 9 
[2,] 2 4 6 8 10 

今私はC/Pythonプログラマだとラインdim(m) <- c(2,5)は私には信じられないほど混乱しています。私はそれが効果的にベクトルを行列に変えたことを理解していますが、それを見ると、私は操作の論理/順序を理解していません。

<-はRの代入演算子です。したがって、論理的には、操作の順序はdim(m)の出力に(2,5)を割り当てます。 dim(m)の出力は変数に割り当てられていないので、出力は失われます。

誰かが私がラインをどう読むべきか説明できますかdim(m) <- c(2,5)?操作の順序は何ですか?これは、<-を使った操作の順番が、LHS のRHSに応じて変わるようです。

答えて

2

これらは置換機能と呼ばれる特別な機能です。私はハドレーのAdvanced-Rの本から引用:彼らは場所にその引数を変更し、特別な名前xxxの<を持っているよう

交換機能が動作します - 。彼らは通常、2つの引数(xとvalue)を持っていますが、より多くのものを持つことができますし、修正されたオブジェクトを返さなければなりません。例えば、次の関数を使用して、ベクターの第二の要素を変更することを可能にする:

`second<-` <- function(x, value) { 
    x[2] <- value 
    x 
} 
x <- 1:10 
second(x) <- 5L 
x 
#> [1] 1 5 3 4 5 6 7 8 9 10 
Rが第二の割り当てを評価するとき

(X)<から5は、それが気付くことの左側< - 単純な名前ではないので、置換を行うにはsecondという名前の関数を探します。< -

代替機能のタイトルの完全な章hereを確認することができます。

関連する問題