2015-09-10 13 views
10
> dput(test) 
structure(list(MEMORY1 = c(7.5, 6, 6, 3.5, 5, 5), MEMORY2 = c(5, 
7.5, 3, 3.5, 5, 5), MEMORY3 = c(5, 3.5, 3, 3.5, 5, 2), MEMORY4 = c(2, 
1.5, 3, 3.5, 1, 2), MEMORY5 = c(7.5, 3.5, 3, 3.5, 5, 7), MEMORY6 = c(2, 
5, 7.5, 7.5, 5, 5), MEMORY7 = c(2, 1.5, 3, 3.5, 5, 2), MEMORY8 = c(5, 
7.5, 7.5, 7.5, 5, 8)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3", 
"MEMORY4", "MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(NA, 
6L), class = "data.frame") 
> test 
    MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8 
1  7.5  5.0  5.0  2.0  7.5  2.0  2.0  5.0 
2  6.0  7.5  3.5  1.5  3.5  5.0  1.5  7.5 
3  6.0  3.0  3.0  3.0  3.0  7.5  3.0  7.5 
4  3.5  3.5  3.5  3.5  3.5  7.5  3.5  7.5 
5  5.0  5.0  5.0  1.0  5.0  5.0  5.0  5.0 
6  5.0  5.0  2.0  2.0  7.0  5.0  2.0  8.0 

私はdata.frameを持っています。私は最初の行だけをサブセット化したいと思います。私はtest[1, ]行うと、結果はR:列名のないdata.frameのサブセット

> test[1, ] 
    MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8 
1  7.5  5  5  2  7.5  2  2  5 

は、私が列名なしで数字だけのベクトルを取得するように、私はdata.frameのサブセットにはどうすればよいのですか?

答えて

8

必要なのは、data.frameではなく数値ベクトルです。このために、あなただけの第二部については変換

> as.numeric(df[1,]) 
[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0 
6

オプションuse.names=FALSEunlistを使用して、名前なしでvectorのみを返すことができます。

unlist(test[1,], use.names=FALSE) 
#[1] 7.5 5.0 5.0 2.0 7.5 2.0 2.0 5.0 

test[1,]まだ8列のdata.frameです。 data.frameは、そのlist要素(または列)について同じlengthを有するlistと見なすことができる。したがって、unlistを使用することができます。これは、複数の行からvectorを作成する場合にも機能します。

unlist(test[1:2,], use.names=FALSE) 

それとも@Frankは、我々は寸法を維持することにより、複数の行をサブセット化している場合、我々はNULLに名前を設定し、matrixに変換、提案など。

as.matrix(setNames(test[1:2,],NULL)) 
+1

を行うためにas.numericを使用することができ、私は寸法が変化するので、それは本当に(OPのタイトルから)「サブセット」ではないと思われます。おそらく 'as.matrix(setNames(test [1:2、]、NULL))'またはgoofier '\' dimnames < - \ '(as.matrix(test [1:2])、NULL)' – Frank

+0

@フランクありがとう。それは理にかなっている。 – akrun

+2

'as.matrix'バージョンの' setNames'の代わりにユーティリティー関数 'unname'があります – user295691

関連する問題