2017-01-09 3 views
0

私は、これは愚かな質問であると確信していますが、私はdata.frame(「data.csv」)のを持っていただきました!間違っdata.frame(R)、rownames()愚かなエラー

私が把握カント

SYMBOL BT.20 CAL.51 MDA.MB.436 BT.549 
A 3.039 4.908 3.865 3.818 
B 4.349 5.399 6.071 5.313 
C 7.509 8.091 6.48 6.660 
D 3.429 4.394 3.622 3.873 
E 3.369 6.716 3.557 3.346 

コード

data <- read_csv("data.csv") 
rnames <- data[,1]    # assign labels in column 1 to "rnames" 
mat_data <- data.matrix(data[,2:28]) # transform column 2 - end into a matrix 
rownames(mat_data) <- rnames     # assign row names 

を生成します。私は、これはのように見え、さらにプロットするためのマトリックスに変換したい93×

列1のdoesntは、事前に重複した名前または欠損値

感謝を持って

編集:代わりにread.csv()と が、それは誤りが値が割り当てされていることを言っている

+2

コードをデバッグする必要があります。 'print(rnames)'を追加してください。 – user31264

+1

、または 'str(rnames)'と 'str(mat_data)'の結果を投稿することができます。次元の問題のようです。 – Bastien

+0

'read.csv(" data.csv "、row.names = 1)'を試しましたか? 'read.csv'でそれらを割り当てます。 –

答えて

2

だけで正常に動作rownamesはリストであり、その中の単一のベクトルを持つリストの「長さ」は、ベクトルの長さではなく1です。通常の動作は "["関数が単一の列をアトミックベクトルに "ドロップ"するために起こるはずの理由を言うことができません。あなたと同じように、私は長さ39の原子ベクトルであることをrnamesを期待しているだろうが、それはあなたの代わりにこれを使用する必要が表示されます。

rownames(mat_data) <- unlist(rnames)    # assign row names 

リッチとApomは私よりもより良い目を持っています。 read_csv関数は、read.csvよりも異なるクラスおよび関連する抽出関数を持つオブジェクトを生成しています。あなたは「hadleyverse」であるので、あなたはそのためにこれを使用する必要があります。

rnames <- data[[1]] 

tibble -classedオブジェクトがdata.framesを行うよりも[ -functionの異なるバージョンを持っています。 [[関数は、両方のクラスで同じように動作するように見えます。

+0

'tibble'や' dplyr'の使用によって引き起こされる可能性があります: 'as_tibble(mtcars)[、1]'はベクトルではなく、チブルです。 '' '' '' '' '' ''の '' drop = TRUE''のデフォルト動作を修正します '' tibble''は '' [TRUE'''のデフォルト動作を修正します] –

+0

これが真であれば 'unlist'は動作しますが、' rnames < - data [ '' ['"は次元を "落とす"ので、 ''名前の作成 ' –

+0

ありがとう百万の若者 –

関連する問題