2016-10-26 8 views
0

から右の列を抽出していない:R:私はこのようになりますテーブルを持っているRの初心者ですテーブル

> means 
     as er op rt 
a 34.66667 3.5 87 4 
b 22.66667 4.5 9 5 
c 5.00000 7.5 6 9 
d 6.00000 0.5 6 3 
e 3.00000 8.0 7 89 

とこのようになります別の1:

> table 
    exp ctrl 
1 as er 
2 rt op 

Iこのように、「テーブル」の欄「EXP」に示されている「手段」の列から値を抽出したい:実際の状況ボットで

> means_exp <- means[, table$exp] 

hテーブルがはるかに大きくなるので、列の名前を指定して1つずつ抽出することは望ましくありません。そして「RT」「として」ではなく「として」と「ER」

任意のアイデアを

> means_exp 
     as er 
a 34.66667 3.5 
b 22.66667 4.5 
c 5.00000 7.5 
d 6.00000 0.5 
e 3.00000 8.0 

が、私は列を取得することになっています:

しかし、そのコマンドで私はこれを取得していますなぜ間違った列が抽出されるのですか?

ありがとうございました!

structure(c(34.6666666666667, 22.6666666666667, 5, 6, 3, 3.5, 
4.5, 7.5, 0.5, 8, 87, 9, 6, 6, 7, 4, 5, 9, 3, 89), .Dim = c(5L, 
4L), .Dimnames = list(c("a", "b", "c", "d", "e"), c("as", "er", 
"op", "rt"))) 

と第二のもの:ここで

は、最初のテーブルのdputある

structure(list(exp = structure(1:2, .Label = c("as", "rt"), class = "factor"), 
    ctrl = structure(1:2, .Label = c("er", "op"), class = "factor")), .Names = c("exp", 
"ctrl"), class = "data.frame", row.names = c(NA, -2L)) 
+0

'手段を試してみての最初の2列を選択してもらいます[、as.character(table $ exp)] ' – akrun

+0

それは動作します!ありがとう。どうしてあなたはどうか説明できますか? – arielle

+0

'table'の列は何ですか?それらは要因ですか? 'str(table)'を調べてください。 – jogo

答えて

1

OPは「テーブル」の「EXP」列と異なる列を得た理由expclassです。 factorクラスなので、characterに変換することはオプションです。

factor

means[,as.character(table$exp)] 

は整数に強制されますと、私たちは

as.integer(factor(table$exp)) 
#[1] 1 2 

means[,factor(table$exp)] 
#  as er 
#a 34.66667 3.5 
#b 22.66667 4.5 
#c 5.00000 7.5 
#d 6.00000 0.5 
#e 3.00000 8.0 

だから、それは代わりに 'と' と 'RT'

+1

大きな説明、ありがとうございます! – arielle

関連する問題