forループを使用すると、データセットの各行の2つの値を無作為にNAで置き換えることができます(この値のインデックスはランダムに変化します各行で)。
私はapply()を使ってまったく同じことをしたいと思います。
私は(どこでもNAを返す他の多くのもののように)このコードを試してみました:(それは初期データセットへの変更は行いません)R値のインデックスを必要とするループの代わりにApply()関数
my_fun<-function(x){if (j %in% sample(1:ncol(y),2)) {x[j]<-NA}}
apply(y,1,my_fun)
しかし、それは動作しません。
問題は、オブジェクトj
が見つかりません。 jは列の番号でなければなりません。 誰かがアイデアを持っていますか?私はあなたがしたいと主張しているあなたの説明から、
あなたの関数から 'X'を返すことがあります。関数の呼び出しでは、引数は** **呼び出しによって関数に渡されます** – jogo
ありがとうございますが、ここではオブジェクトjが見つからないということです –
'y'はどのオブジェクトですか?あなたのデータを表示するには 'dput()'を使ってください! 'y'が行列(またはdata.frame)の場合、' apply(y、1、my_fun) 'は関数' my_fun'に行単位で送信します。だからあなたの関数 'my_fun'では、オブジェクト' x'はベクトル(すなわち 'y'からの1つの行)です。 – jogo