ベクトルの操作について理解したと思うたびに、単純な問題のように見えるものが頭をひっくり返してしまいます。今回は、さまざまな例を読んで試してみましたが、役に立ちませんでした。ここでスプーンで食べさせてください...
データフレームの各行に 2 つのカスタム関数を適用し、結果を 2 つの新しい列として追加したいと考えています。ここに私のサンプルコードがあります:
# 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 ライブラリと、より基本的なアプローチを使用して回答を得ることは素晴らしいことです。どちらも私の理解に役立ちます。もちろん、明らかに間違っているところがあれば指摘してください。;-)
ヘルプ ファイルに戻りましょう。
編集:列名が変更され、時間の経過とともに拡張される可能性があるため、多変量ソリューションが必要です。また、将来的にコードを再利用することもできます。