4

データフレームがあります。特定の行に対して最大3列のダミー変数を作成しようとしています。

for(i in 1:nrow(data))
{
  data[i,]$max_metric <- max(data[i,]$a,
                             data[i,]$b,
                             data[i,]$c)
}

このコードは機能しますが、それを行うための最良の方法ではありません。これを行う他の方法はありますか?

4

1 に答える 1

5

を使用しますpmax。これは、渡されたすべての引数の要素ごとの最大値を取ります。ただし、これは、data.frame全体を渡すことはできないことを意味します。

# this won't work because data[,c("a","b","c")] is one argument
data$max_metric <- pmax(data[,c("a","b","c")])

ただし、2番目の引数はリストである必要があり、data.framesはリスト(いくつかの属性を持つ)であるため、data.frameの各列をpmaxviaに渡すことができます。do.calldo.call

data$max_metric <- do.call(pmax, data[,c("a","b","c")])
# if you want na.rm=TRUE
data$max_metric <- do.call(pmax, c(data[,c("a","b","c")],list(na.rm=TRUE)))
于 2012-05-01T19:59:18.337 に答える