2012-03-13 5 views
5

論理テストのループからデータを保存しようとしています。私は、次のループRのループ:出力の保存方法は?

for (i in 1:49) { 
    print(T1 > F[i]) # I used print to see the results in the screen 
} 

このループは私の論理値(真または偽)で満たされた49個の行列を返すにrunnedいる

T1 <- matrix(seq(from=100000, to=6600000,length.out=676),26,26) # a matrix of 26X26 - here with illustrive values 

minmax <- seq(from=1,to=49,by=1) # creates a sequence 
Fstep <- 6569141.82/minmax  # define a vector from 0 to 6569141.82 with 49 divisions 
F <- rev(round(Fstep,0))   # round the vector values and re order them 
F 

は、だから私は、次のデータを持っています。各マトリックスは、49個の位置F [i](F [1]、...、F [49])のそれぞれに対するT1の比較である。

これらのマトリックスの値は、ネットワークプロットのための隣接行列。しかし、それらの論理値を行列に割り当てることができないときは、どちらも "write.matrix"を使ってcsv値に保存しないでください。

したがって、論理値(TまたはF)で49行の「W」を埋め込む必要があります。私はすでに上記のループによってそれらの値を持っていますが、私はオブジェクトとして、またはCSVのコレクションとして取得できません。ファイル。

Iは、次の警告

Warning messages: 
1: In W[i] <- (T1 > F[i]) : 
    number of items to replace is not a multiple of replacement length 

を返し

W<-matrix(0,26,26) #create an empty matrix to assign the logical arguments 
for (i in 1:49){ 
    W[i] <- T1>F[i] # I used print to see the results in the screen 
} 

を試みまた、私は比較すべての行列が同一の寸法を有している別の設定を試みました。

create.M <- function(F){ # a function to transform each position F[i] into a 26X26 matrix 
    for (i in 1:49) { 
    matrix(F[i],26,26) 
    } 
} 

Loop.T1 <- function(T1){ # a function to replicate T1(49 times) 
    for (i in 1:49) { 
    T1 
    } 
} 

+0

は、使用しようとしている場合です。さもなければ耐久性のある何も「起こらない」。 –

答えて

7
logical(0) 

ストアリスト内の項目として各ブール行列戻り二つの出力

Loop.T1(T1)>create.M(F) 

比べ:行う

result <- vector("list",49) 
for (i in 1:49) 
{ 
    result[[i]] <- T1>F[i] # I used print to see the results in the screen 
} 

#Print the first matrix on screen 
result[[1]] 
6

別の方法をジョランが私たちに示唆しているもの関数の適用ファミリ。

result2 <- lapply(F, function(f) {T1 > f}) 

これはjoranのresult、各要素がFの値のいずれかに対応し、その要素は、26x26論理行列であるリストと同じものが得られます。

もう1つの方法は、各スライスがFの値の1つに対応する3次元論理マトリックス(49 * 26 * 26)として結果を格納することです。

result3 <- sapply(F, function(f) {T1 > f}, simplify="array") 

その構造は、あなたがその割り当ては、ループ内で必要である学ぶ必要があるため、ループ

> str(result3) 
logi [1:26, 1:26, 1:49] FALSE FALSE FALSE FALSE TRUE TRUE ... 
+1

偉大なブライアン。結果2はうまくいきます!適用ファミリのドキュメントとその構文についてさらに説明します。 –

関連する問題