データフレームdf
と列で、すべての行のすべてa
を置き換えたいと思います。is.na
a=2
<- 0
これは、次の方法で簡単に実現できます。df[is.na(df$a) | df$a==2, "a"] <- 0
これをさまざまな列(、、、など)で何度も繰り返すb
のでc
、d
関数を作成できるかどうかを確認したかっただけです。この関数を何度も繰り返し使用します。そうすれば、どの値またはどの出力を変更する必要があるかは、簡単な作業になります。
これが小さな例です。最初のデータフレーム:
df<-data.frame(
a=sample(c(0,1,2), 10, replace=TRUE)
)
ここでいくつかの欠落している値:
df[sample(nrow(df), 3, FALSE), "a"] <- NA
最後に、[私がすでに述べた]置換するアクション:
df[is.na(df$a) | df$a==2, "a"] <- 0
私は次の機能を試しました:
f.na<-function(df,col) df[is.na(df[,col]) | df[,col]==2, col]<-0
f.na(df, "a")
うまくいくはずなのに、なぜうまくいかないのかわかりません。私は得る:
[.data.frame
(df 、、 col)のエラー:未定義の列が選択されました
$
サインが使えないので、[]
オンラインで読んでみてみました。あるapply
タイプの関数を使用していましたが、後でデータフレームで結果を使用できなくなりました。それで私はこの方法に頼りました。変更する必要のある列ごとに何度も繰り返すことができると思いますが、関数ソリューションがあればいいと思いました。
私が試してみるべきことを提案できますか?