2017-01-30 4 views
1

ベクトルを格納するデータ構造を作成しようとしています。私が探しているのは、内部に異なる長さのベクトルを持つ3x2行列です。col /行の名前と未知の長さを持つrのベクトルの行列

   front  side 
Original c(dim=221) c(dim =200) 
zscore c(dim=221) c(dim =200) 
smoothed c(dim=221) c(dim =200) 

私がやって試してみました:

dataset <- array(dim=c(3,2)) 
rownames(dataset) <- c("original","zscores","smoothed") 
colnames(dataset) <- c("front", "side") 

dataset["original", "side"] <- myNumericVectorOfLength221 
dataset["original", "front"] <- myNumericVectorOfLength200 

をしかし、それは "ない同じサイズ" のエラーがスローされます。 dataset <- array(dim=c(3,2,221))のような3次元配列は、長さの違いのために機能せず、(dataset["original", "side"] <- list(c(1,2,3)))のようなベクトルの行列を作成すると、col/rownamesが失われます。

私の考えに合った解決策はありますか?前もって感謝します。

+1

たぶん[これは役立ちます](http://stackoverflow.com/questions/3699405/how-to-cbind-or-rbind-different-lengths-vectors-without-repeating-the-elements- o) – Sotos

+1

alistの要素に名前を付けることはできますが、これで十分でしょうか? – LAP

+0

もう少し説明できますか? @LeoP。 – Sergiodiaz53

答えて

2

多次元リストを作成することができます。 :

# prepare some random vectors with different lengths 
myNumericVectorOfLength221 <- rnorm(221) 
myNumericVectorOfLength200 <- rnorm(220) 

# create a multi dimensional list 
dataset <- array(list(),dim=c(3,2)) 
rownames(dataset) <- c("original","zscores","smoothed") 
colnames(dataset) <- c("front", "side") 

# fill some cells 
dataset[["original", "side"]] <- vec10 
dataset[["zscores","front"]] <- vec3 

# let's see the whole matrix 
> dataset 
     front  side  
original NULL  Integer,10 
zscores Integer,3 NULL  
smoothed NULL  NULL 

# let's get one of the added vector 
> dataset[["original", "side"]] 
[1] 1 2 3 4 5 6 7 8 9 10 
+1

これは私の 'list'アプローチの非常に有用な拡張です。私はあなたがこれをすることができるのか知らなかった。ありがとう! – LAP

+0

素晴らしい!どうもありがとうございました – Sergiodiaz53

1

ベクトルをリストに保存して、そのリストの要素に名前を付けることができます。

いずれかのため、何か問題に遭遇しないだろう、異なるクラスや寸法のものとすることができる

mylist2 <- list("front" = list("Original" = vector1, "zscore" = vector2, ...), 
       "side" = list("Original" = vector3, "zscore" = vector4)) 

リストの要素をすべてのベクトル

mylist <- list("front_Original" = vector1, "front_zscore" = vector2, ...) 

と1つのリストを作成したり、あなたの要因のためにサブリストを作成するには、この方法。リストを参照すると、data.frameと同様に動作しますので、mylist2$front$Originalまたはmylist2[[1]][[1]]mylist2のベクトルを呼び出すことができます。

+0

よろしくお願いします。主な問題は、変数 "type"を使って "Original"のような文字列を取得しているので、配列をdataset [type、 "side"]のように呼びたいと思います。私は 'mylist2 $ front $ type'と同じことをやろうとしましたが、うまくいきません。この方法でリストを呼び出すにはどうしてですか?ご協力いただきありがとうございます。 – Sergiodiaz53

関連する問題