dt
文字ベクトルを指定して data.table の列のクラスを確認する方法を知りたいw
です。
再現可能な例:
dt <- data.table(matrix(1:10, 2))
w <- "V1"
列を名前で直接指定すると、クラスを取得できるようにベクトルが返されます。
> dt[,V1]
[1] 1 2
> class(dt[,V1])
[1] "integer"
ただし、これを文字ベクトルとして指定すると、代わりに 1 列の data.table が返されます。
> dt[,w,with=FALSE]
V1
1: 1
2: 2
> class(dt[,w,with=FALSE])
[1] "data.table" "data.frame"
私は次の解決策にたどり着きましたが、確かにもっと良い方法があります:
dt[,eval(parse(text=paste0("class(",w,")")))]
2つの質問:
- 単一の列のクラスを取得するためのより良い(より簡潔な)方法はありますか(data.table
class
の環境での呼び出しを評価することによって上記のソリューションが得る速度をあきらめることなく)? - に類似した、すべての列のクラスのベクトルを取得する方法はあります
sapply( myDataFrame, class)
か?