LoginSignup
0
1

rで演算結果がベクトル(ベクター)にならず,単一の値として出力される

Last updated at Posted at 2023-06-21

概要

ベクトル + データフレーム = データフレーム

問題のコード

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_0y_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)# ベクトルになる!!

パパパっと変換して,終わりっ!!

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1