2つのdata.framesdf1
と1つerrors
の関数がありますadd_to_errors()
。関数の引数は(のdf1
)行番号のベクトルであり、関数は選択された行をと呼ばれる新しいdata.frameに追加する必要がありerrors
ます。
df1 <- data.frame(id=1:10,
var1=rep(NA, 2),
var2=rep(NA, 2))
errors <- data.frame()
add_to_errors <- function(ids){
rows_to_add <- df1[ids,]
errors <- rbind(errors, rows_to_add)
return(errors)
}
add_to_errors(c(1,2))
add_to_errors(c(6,7))
を実行するadd_to_errors(1, 2)
とadd_to_errors(6,7)
、errors
関数が呼び出されるたびに上書きされたように見えます。errors
関数内でグローバル変数としてアクセスするにはどうすればよいですか?
出力は次のようになります。
id var1 var2
1 1 NA NA
2 2 NA NA
3 6 NA NA
4 7 NA NA
1つの方法は<<-
、次のように使用することです。
add_to_errors <- function(ids){
rows_to_add <- df1[ids,]
errors <<- rbind(errors, rows_to_add)
return(errors)
}
add_to_errors(c(1,2))
# id var1 var2
#1 1 NA NA
#2 2 NA NA
add_to_errors(c(6,7))
# id var1 var2
#1 1 NA NA
#2 2 NA NA
#6 6 NA NA
#7 7 NA NA
<<-
関数内でグローバル環境を変更することは良い習慣とは見なされません(これは副作用と呼ばれ、バグが発生するため、可能であれば回避することをお勧めします)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加