有人可以解释一下这一行 R 代码是如何工作的吗?
split(dat, f) <- lapply(split(dat, f), max)
我以为这只是一个回收规则,但实际上我无法理解。
数据示例:
dat <- c(1, 2, 3, 100, 200, 300)
f <- as.factor(c("a", "a", "b", "a", "b", "b"))
split(dat, f) <- lapply(split(dat, f), max)
dat
[1] 100 100 300 100 300 300
该代码做了我想做的事情(按组分配最大值),但问题是这是如何完成的?
分割给出了值dat[c(1,2,4)]
and dat[c(3,5,6)]
从向量。
该作业相当于dat[c(1,2,4)] <- 100 ; dat[c(3,5,6)] <- 300
这就是回收发生的地方。
Edited
至于发生了什么以及为什么会产生向量分配,请参阅语言定义手册 (http://cran.r-project.org/doc/manuals/R-lang.pdf) 第 21 页。通话:
split(def, f) <- Z
解释为:
‘*tmp*‘ <- def
def <- "split<-"(‘*tmp*‘, f, value=Z)
rm(‘*tmp*‘)
注意split<-.default
返回修改后的向量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)