【发布时间】:2018-06-25 02:37:19
【问题描述】:
这不是严格意义上的问题,而是我偶然遇到的事情。然而,这对我来说真的很有趣。
我在控制台中运行了以下行
sc_matrix <- data.frame(sc_start<-rpois(n=15, 0.4), sc_end<-rpois(n=15, 0.3))
我真的很惊讶输出是
head(sc_matrix, n=5)
# sc_start....rpois.n...15..0.4. sc_end....rpois.n...15..0.3.
#1 0 1
#2 0 2
#3 0 0
#4 1 1
#5 0 0
首先,我很惊讶,因为口译员理解我(甚至没有警告)。即使我在data.frame 构造函数中使用了<- 赋值,也创建了data.frame。
其次,colnames 似乎是按照规则创建的,将所有非字母数字变为.(dot) 并将其用作名称。
在阅读了assignments comparison 上的讨论后,我想我的问题是:
R 如何处理那行代码?由于没有 = 运算符,它会评估每个参数,例如sc_start<-rpois(n=15, 0.4),从中创建列名并使用右侧评估的值?
这似乎很棘手,因为运算符<- 不返回任何值,我猜创建的data.frame 应该包含类似NULL 的内容。
我将不胜感激任何关于此的cmets。
【问题讨论】:
-
colnames中的点很可能是
make.names()生成的,纪录片中说:A syntactically valid name consists of letters, numbers and the dot or underline characters [..] All invalid characters are translated to ".".
标签: r parsing assignment-operator