2

apply を使用してデータ フレームの行を関数に渡すと、その行の要素のクラス情報が失われます。それらはすべて「キャラクター」に変わります。以下は簡単な例です。三手先の時代に数年足したい。数値だった値に 2 を加算しようとすると、R は「二項演算子への数値以外の引数」と言います。どうすればこれを回避できますか?

age = c(20, 30, 50) 
who = c("Larry", "Curly", "Mo") 
df = data.frame(who, age) 
colnames(df) <- c( '_who_', '_age_')
dfunc <- function (er) {

   print(er['_age_'])
   print(er[2])
   print(is.numeric(er[2]))

  print(class(er[2]))
  return (er[2] + 2)
}
a <- apply(df,1, dfunc)

出力は次のとおりです。

_age_ 
 "20" 
_age_ 
 "20" 
[1] FALSE
[1] "character"
Error in er[2] + 2 : non-numeric argument to binary operator
4

1 に答える 1