每次我认为我已经理解了如何处理向量,但看起来简单的问题总是让我头痛不已。阅读大量的资料和尝试不同的例子在这个问题上并没有帮助。请在这里给我详细指导...
我想对数据框中的每一行应用两个自定义函数,并将结果作为两个新列添加。以下是我的示例代码:
# Required packages:
library(plyr)
FindMFE <- function(x) {
MFE <- max(x, na.rm = TRUE)
MFE <- ifelse(is.infinite(MFE ) | (MFE < 0), 0, MFE)
return(MFE)
}
FindMAE <- function(x) {
MAE <- min(x, na.rm = TRUE)
MAE <- ifelse(is.infinite(MAE) | (MAE> 0), 0, MAE)
return(MAE)
}
FindMAEandMFE <- function(x){
# I know this next line is wrong...
z <- apply(x, 1, FindMFE, FindMFE)
return(z)
}
df1 <- data.frame(Bar1=c(1,2,3,-3,-2,-1),Bar2=c(3,1,3,-2,-3,-1))
df1 = transform(df1,
FindMAEandMFE(df1)
)
#DF1 should end up with the following data...
#Bar1 Bar2 MFE MAE
#1 3 3 0
#2 1 2 0
#3 3 3 0
#-3 -2 0 -3
#-2 -3 0 -3
#-1 -1 0 -1
如果能使用plyr库和更基础的方法回答会很好,这两种方法都有助于我的理解。当然,如果我做错了什么,请指出来。;-)
现在我要回到帮助文件!
编辑:我想要一个多元解决方案,因为列名可能会随时间变化而扩展。它还允许将来重复使用代码。
pmin
,pmax
解决方案将处理任意列数、任意名称的数据框。但是我只是猜测你在这里所说的“多元”的含义。 - joran