假设我是一个有坏习惯的懒惰程序员(同时也不知道plyr/dplyr),我喜欢做这样的操作:
`[<-`((z<-reshape2::melt(iris)), z[,"value"]>5, 3, 100)
将iris
融化,然后将值大于5的行的value
赋值为100,然后返回所有行,而不仅仅是选择的行。该函数在?"["
页面上有描述。
replace()
的相同代码(几乎相同)
z[,"value"] <- replace(i <- ((z <- reshape2::melt(iris))[,"value"]), i > 5, 100)
1) 问题是:是否有办法使用标准括号表示法 iris[<-, blah, blah, blah, ?]
调用 [<-
函数?
编辑于2016年7月:所以这个问题的目的不是为了复制操作。数据无关紧要,示例无关紧要,重新整理数据的复杂方式也无关紧要。
\
[.myClass` <- function(stuff) assign(stuff)或者类似的内容,然后执行
class(iris) <- "myClass"`。 - Rich Scriven\
[<-`(z=reshape2::melt(iris),z[3]>5,3,100)` 用 fewer keystrokes 可以实现相同的功能。我不知道这有什么意义。"function using using the standard.." 是什么意思?你是指 "without using?" 如果你只是在玩代码高尔夫,那就另当别论了。但是,计算出执行某些操作所需的最少按键次数似乎是一个容易出错的浪费时间的做法,而且将多个步骤合并成一个脚本会使调试变得更加困难。这样做并不能节省大量时间。 - rawrwithin(reshape2::melt(iris), value[value > 5] <- 100)
。 - flodel