私は以前のものに基づいて新しいオブジェクトを作成する関数を書こうとしていました。しかし、私はそれをすることはできませんでした。 はここに私のデータフレームです:Rの関数で新しいデータフレームを作成する
Names <- c("Tom", "Alex", "James", "John", "Wayne", "Harry")
a <- c(1,3,6,8, NA, 5)
b <- c(3,6,9,1, NA,1)
c <- c(7,3,1,6,NA,6)
d <- c(1,4,7,2,NA,8)
data <- data.frame(Names,a,b,c,d)
そして、ここでは私の関数は
NAvalues <- function(x,object, y){
object[sample(seq_len(nrow(object)), x, replace = FALSE),-1] <- NA
summary(object)
y <- data.frame(object)
}
だ最初の部分は正常に動作しますが、私はyで指定された名前を持つことになり、新しいオブジェクトを作成するために苦労しています。
NAvalues(2, data, new)
これを使用すると、new
というようなオブジェクトがないというエラーが表示されます。 誰かが私になぜそうだと教えてもらえますか?
にその変数を割り当てることができます
です'関数の中に 'y'という名前のオブジェクトを作成しますが、関数の最後には 'y'がなくなります。 「y」パラメータを取り除くだけでなく、関数内から作成したdata.frameを返し、関数の出力を呼び出したいものに割り当てます。だから、あなたは次のような関数を使います。 'new <--Navalues(2、data)' – Dason
これは本当に役に立ちました。ありがとう! – kubafrustrat
ちょうど@Dasonのコメントを展開してください:おそらく、あなたは "new"を "reference by"を渡す行に沿って考えているでしょう(例えば、C++のように/できます)。それはRの仕組みではありません。 R関数の出力( 'return'引数)を新しい変数に代入する必要があります。 –