不同的行为在使用“=”与“< - ”操作者在R中分配数据帧[重复](Different beh

2019-09-20 06:33发布

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

我想知道为什么会出现使用之间的差异=<-而分配dataframe

案例一:使用=

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))

为什么会出现以下区别? 为什么没有第二个方法保留变量/列的名字呢?

> 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

Answer 1:

内的功能“=”被用作命名或参照的功能的特定名称的变量和< - 指的是分配功能。 当R运行它将首先解决“< - ”你的函数的参数范围内的功能,然后将变量命名为枯萎的东西等号的左边或完整的表达在这种情况下,‘B1 < - RNORM(10)’。最后,将解决功能(在这种情况下data.frame)。

你几乎总是要在一个函数中使用“=”。 有可能,你可能要嵌套的分配情况“< - ”,但通常这会让你的代码可笑阅读。



Answer 2:

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

“......这些参数用的形式的值或标签=值的。组件名称创建基于标签(如果存在的话)或deparsed参数本身。”

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



Answer 3:

只是要添加到@保罗和@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


文章来源: Different behavior in using '=' versus '<-' operator while assigning a dataframe in R [duplicate]