在R中分配数据帧时使用'='与'< - '运算符的不同行为

Sta*_*t-R 2 r columnname dataframe

可能重复:
R中的赋值运算符:'='和'< - '

我想知道为什么使用=<-分配a时有区别dataframe.

案例a:使用 =

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

案例b:使用 <-

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

为什么会有以下区别?为什么第二种方法没有保留变量/列名?

> 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
Run Code Online (Sandbox Code Playgroud)

Edw*_*ard 7

如果你看一下?'data.frame',你会看到以下第一个参数:

"...这些参数是表单值或tag = value.组件名称是根据标记(如果存在)或deparsed参数本身创建的."

如果使用"< - "而不是"=",data.frame()是读你输入作为表达式(分配RNORM(10)a1)中,而不是作为一个(RNORM(10))被分配给标签(a1)


小智 6

函数'='用作命名或将函数引用到特定名称的变量,< - 表示赋值函数.当R运行时,它将首先解析函数参数中的"< - "函数.然后它将变量命名为等号左边的东西或本例中的完整表达式"b1 < - rnorm(10)".最后它将解析该函数​​(在本例中为data.frame).

你几乎总是想在函数中使用'='.在某些情况下,您可能希望嵌套作业"< - ",但通常这会使您的代码难以阅读.


Ari*_*man 6

只是为了增加@Paul和@Edward之前的(非常好的)答案,这是你使用<-而不是=内部的结果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
Run Code Online (Sandbox Code Playgroud)