データフレームの各行に以下のように関数を適用したいと思います。私は、データフレームに数字だけが含まれている場合にapplyを使う方法を知っていますが、行にブール値/論理、文字列、整数が含まれているとどうなりますか?例:この機能を各行にデータフレームに適用すると良いでしょうか?
df <- data.frame(x=1:10,
y=c(TRUE, FALSE),
z=letters[1:10],
stringsAsFactors=FALSE)
RowFunction <- function(row) {
if (row$y) return(row$x)
return (row$z)
}
sapply(1:dim(df)[1], function(i) { RowFunction(df[i, ]) })
これを行うより良い方法はありますか?私の最初の考えは、をRowFunctionの先頭に追加した後にapply(df, 1, RowFunction)
を使用することでしたが、applyは異なるデータ型を含む行を処理できない配列に適用するため、これは機能しません。
私の知る限りでは、これを行うクリーナーの方法がsapply(1:dim(df)[1], ...)
よりもあるかどうかを知りたいと思います。何か案は?
ありがとうございます!この場合
私はベクトル中_all_の要素があることになることを指摘したいと思います同じモード。モードやタイプが異なる結果を得る唯一の方法は、リストを返すことです。 –