我与Plyr syntax一样。 任何时候,我都必须使用其中的一条,命令我停止踢狗,并投入3天。 因此,为了我的狗和我的肝脏,在数据框架的每一行中,什么是简明的星子干 operation?
这里的例子对一个简单的例子非常有益:
x <- rnorm(10)
y <- rnorm(10)
df <- data.frame(x,y)
ddply(df,names(df) ,function(df) max(df$x,df$y))
这使我感到很荣幸。 但是,如果事情变得更加复杂,就会造成气温升高(而不是像Botsy Collins那样),因为纸浆商正在从所有这些浮点价值中 making出“水平”。
x <- rnorm(1000)
y <- rnorm(1000)
z <- rnorm(1000)
myLetters <- sample(letters, 1000, replace=T)
df <- data.frame(x,y, z, myLetters)
ddply(df,names(df) ,function(df) max(df$x,df$y))
在我的盒子里,这che有几分钟,然后返回:
Error: memory exhausted (limit reached?)
In addition: Warning messages:
1: In paste(rep(l, each = ll), rep(lvs, length(l)), sep = sep) :
Reached total allocation of 1535Mb: see help(memory.size)
2: In paste(rep(l, each = ll), rep(lvs, length(l)), sep = sep) :
Reached total allocation of 1535Mb: see help(memory.size)
我认为,我完全是 p的,我并不是说这是 p,而是我的虐待行为(尽管有肝和狗)。
因此,简言之,是否使用dply在每行操作以取代<条码>pply(X, 1,......)?
我所利用的工作是建立一个“关键”,给每个阶层带来独特的价值,然后我可以加入。
x <- rnorm(1000)
y <- rnorm(1000)
z <- rnorm(1000)
myLetters <- sample(letters, 1000, replace=T)
df <- data.frame(x,y, z, myLetters)
#make the key
df$myKey <- 1:nrow(df)
myOut <- merge(df, ddply(df,"myKey" ,function(df) max(df$x,df$y)))
#knock out the key
myOut$myKey <- NULL
但我仍然认为,“有更好的途径”
感谢!