[解決済み] data.tableから列を位置ごとにベクトルとして取り出す
2023-06-10 23:55:43
質問
data.tableから列の位置をベクトルとして抽出するにはどうすればよいでしょうか。以下は、私が試したいくつかのコードスニペットです。
DT<-data.table(x=c(1,2),y=c(3,4),z=c(5,6))
DT
# x y z
#1: 1 3 5
#2: 2 4 6
列の位置を利用して、このような出力を得たい
DT$y
#[1] 3 4
is.vector(DT$y)
#[1] TRUE
列の位置を用いてこの出力を得る他の方法
DT[,y]
#[1] 3 4
is.vector(DT[,y])
#[1] TRUE
これはベクトルを与えるものではありません
DT[,2,with=FALSE]
# y
#1: 3
#2: 4
is.vector(DT[,2,with=FALSE])
#[1] FALSE
この2つはうまくいきません。
DT$noquote(names(DT)[2]) # Doesn't work
#Error: attempt to apply non-function
DT[,noquote(names(DT)[2])] # Doesn't work
#[1] y
そして、これではベクトルが出ません。
DT[,noquote(names(DT)[2]),with=FALSE] # Not a vector
# y
#1: 3
#2: 4
is.vector(DT[,noquote(names(DT)[2]),with=FALSE])
#[1] FALSE
どのように解決するのですか?
data.tableは、クラス
data.frame
. したがって、それは
list
(列ベクトルの)内部でそのように扱うことができます。
is.list(DT)
#[1] TRUE
幸いなことに、リストのサブセット、すなわち
[[
とは対照的に、非常に高速で
[
とは対照的に、data.tableパッケージはそれ用のメソッドを定義していません。従って、単純に
[[
を使用してインデックスによって抽出することができます。
DT[[2]]
#[1] 3 4
関連
-
[解決済み] ベクトルが与えられた要素を含むかどうかをテストする
-
R - よくあるエラーとその原因 - 注意事項
-
R言語ダウンロード機能 download.fileとダウンロード解析
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] Rでtrycatchの書き方
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み】data.table vs dplyr:一方がうまくできない、またはうまくできないことを行うことができますか?
-
[解決済み】set.seed関数を使用する理由
-
[解決済み] 変数名が文字ベクトルで格納されている場合のdata.tableへの選択と代入
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Rでファイルを読み込む際に、そのようなファイルまたはディレクトリが見つかりません。
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
R言語における共通関数
-
[解決済み] lm.fit(x,y,offset = offset, singular.ok,...) 0 非NAケースでboxcox式で計算するとエラーになる。
-
[解決済み] Rでデータフレームに行を追加する方法は?
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] リストをデータフレームに変換する
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み】エラー:Rで関数が見つかりませんでした。