概要
ベクトル + データフレーム = データフレーム
問題のコード
r <- 1:r_max
x_0 <- center[1]
y_0 <- center[2]
x <- round(r + x_0)# ベクトルにならない!!
y <- round(r + y_0)# ベクトルにならない!!
こちらが問題のコードになります.r_max
は35とか,適当な値です.
center
が今回の主役になります.1*2のデータフレームです.
原因
center
から取り出したx_0
やy_0
がデータフレームのままになっていたことがエラーの原因でした.
r + x_0
の部分になります.
ベクトル(r
)とデータフレむ(x_0
)の足し算では,演算結果のデータ型を決定するときにベクトルよりもデータフレームの方が優先されるようです.
つまり,ベクトル(length(r)
個)よりデータフレーム(1個)の方が優先され,答えがベクトルで帰ってこなかったということになります.
# dfか???
is.data.frame(x_0) # TRUE
is.data.frame(r) # FALSE
# numericか????
is.numeric(x_0) # FALSE
is.numeric(r) # TRUE
解決策
原因がわかれば後は簡単です.
データフレームを数値に変換すれば良いので,
r <- 1:r_max
x_0 <- center[1]
y_0 <- center[2]
######### 修正箇所 ##########
x_0 <- as.numeric(x_0)# numericにする
y_0 <- as.numeric(y_0)# numericにする
###########################
x <- round(r + x_0)# ベクトルになる!!
y <- round(r + y_0)# ベクトルになる!!
パパパっと変換して,終わりっ!!