每次我认为我理解了使用向量的方法时,一个看似简单的问题就会让我的头脑彻底清醒。在这种情况下,大量阅读和尝试不同的例子并没有帮助。请在这里用勺子喂我...
我想将两个自定义函数应用于数据框的每一行并将结果添加为两个新列。这是我的示例代码:
# 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 库和更基础的方法获得答案会很棒。两者都将有助于我的理解。当然,如果很明显,请指出我要去哪里。;-)
现在回到我的帮助文件!
编辑:我想要一个多元解决方案,因为列名可能会随着时间的推移而改变和扩展。它还允许将来重用代码。