Heterogeneity 人们对 <<-
最常见的误解就是以为它是全局赋值符,但它并不是,它只是上层赋值符。如果一个对象在上层环境中不存在,那么接着到上上层中找,一直找到全局环境。如果全局环境中也不存在,R 会在全局环境中创建这个对象。
说实在的,我觉得你有点管道中毒的感觉,这里用管道实在是毫无价值,反增疑惑。本来是个非常简单的赋值操作:
k[2*i, 2*j + c(1, 3, 4)] = rnorm(1)
却被写得如此诘屈聱牙:
(2*j) %>% {k[2*i, c(.+1, .+3, .+4)] <<- rnorm(1)}
就像好好的一句主动语态的句子,硬用被动语态表达出来一样:
我今天中午吃了一碗饭。
一碗饭今天中午被我吃了。
这碗饭实在让人噎得慌。一个普通 R 用户看见你的一行代码至少得问四个问题:
%>%
是什么?.
是什么意思?<<-
是什么操作?- 为什么要用花括号?
每个问题都不容易回答,涉及到深层技术细节。
另:你加入论坛晚,不知道大名鼎鼎的颜大站长 @yanlinlin82 很正常,早年间很活跃,是 COS 的大功臣,可惜现在跟众人一样误入微信歧途了,只在微信上回答问题。