2

=の使用と<-割り当て中に違いがある理由を知りたいのですがdataframe

ケースa:使用=

set.seed(100);a <- data.frame(a1=rnorm(10),a2=sample(c(1,0),10,replace=TRUE))

ケースb:使用<-

set.seed(100);b <- data.frame(b1 <- rnorm(10),b2 <- sample(c(1,0),10,replace=TRUE))

なぜ次のような違いがあるのですか?2番目のメソッドが変数/列名を保持しないのはなぜですか?

> a
           a1 a2
1 -0.50219235  0
2  0.13153117  0
3 -0.07891709  1
4  0.88678481  1
5  0.11697127  0

>b
  b1....rnorm.5. b2....sample.c.1..0...5..replace...TRUE.
1    -0.50219235                                        0
2     0.13153117                                        0
3    -0.07891709                                        1
4     0.88678481                                        1
5     0.11697127                                        0
4

3 に答える 3

7

を見ると?'data.frame'、最初の引数として次のことがわかります。

「...これらの引数は、valueまたはtag = valueのいずれかの形式です。コンポーネント名は、タグ(存在する場合)または逆解析された引数自体に基づいて作成されます。」

'='の代わりに'<-'を使用すると、data.frame()は入力を(rnorm(10)をa1に割り当てる)として読み取り、(rnorm(10))としては読み取りません。タグ(a1)

于 2012-07-26T19:04:09.293 に答える
6

@Paulと@Edwardによる以前の(非常に良い)回答に追加するために、insideの<-代わりにを使用した結果を次に示します。つまり、2つの新しいオブジェクトを作成しました。=data.frame()

> b1
Error: object 'b1' not found
> b2
Error: object 'b2' not found
> set.seed(100);b <- data.frame(b1 <- rnorm(10),b2 <- sample(c(1,0),10,replace=TRUE))
> 
> b1
 [1] -0.50219235  0.13153117 -0.07891709  0.88678481  0.11697127  0.31863009 -0.58179068  0.71453271 -0.82525943 -0.35986213
> b2
 [1] 0 0 0 0 1 1 0 0 0 1
于 2012-07-26T19:34:01.823 に答える
5

Within functions '=' is used as naming or referring the function to a variable of a particular name and <- refers to the assignment function. When R runs it will first resolve '<-" functions within your function parameters. It will then name the variable wither the thing to the left of the equal sign or the full expression in this case "b1 <- rnorm(10)". Finally it will resolve the function (in this case data.frame).

You almost always want to use the '=' within a function. There can be cases where you may want to nest an assignment "<-" but normally this will make your code ridiculous to read.

于 2012-07-26T19:13:16.283 に答える