2012-03-13 11 views
5

मैं तार्किक परीक्षण की एक पाश से डेटा को बचाने के लिए कोशिश कर रहा हूँ।आर में लूप: कैसे आउटपुट को बचाने के लिए?

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 

मैं निम्नलिखित पाश

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

इस पाश मुझे रिटर्न 49 तार्किक मान (सही या गलत) के साथ में भरा मैट्रिक्स runned है

तो मैं निम्नलिखित डेटा है। प्रत्येक मैट्रिक्स 49 पदों में से प्रत्येक के खिलाफ टी 1 की तुलना एफ [i] (एफ [1], ...., एफ [4 9])

मुझे उन मैट्रिक्स में मूल्यों को आगे के रूप में उपयोग करने की आवश्यकता है नेटवर्क भूखंडों के लिए आसन्नता matrices। लेकिन जब मैं न तो एक मैट्रिक्स के लिए उन तार्किक मान असाइन नहीं कर सकते, न तो उन्हें "write.matrix" का उपयोग सीएसवी मूल्यों में सहेजें।

तो, मैं 49 की आवश्यकता है - मैट्रिक्स "W" तार्किक मान (टी या एफ) के साथ में भर दिया। मैं पहले से ही ऊपर पाश से उन मूल्यों को मिल गया लेकिन मैं इसे एक वस्तु के रूप या csv के संग्रह के रूप में नहीं मिल सकता है। फ़ाइलें।

मैं

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 
} 

जो निम्न चेतावनी

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

मैं भी जिसमें सभी मैट्रिक्स मैं तुलना एक ही आयाम है एक अलग सेटिंग की कोशिश की रिटर्न की कोशिश की।

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 
    } 
} 

और तुलना दो outputs

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

जो किसी सूची में

logical(0) 
+0

आप के लिए-लूप आप जानने के लिए कि काम पाश के भीतर आवश्यक है की जरूरत का उपयोग करने जा रहे हैं, तो है। अन्यथा टिकाऊ कुछ नहीं होता "होता है"। –

उत्तर

7

स्टोर प्रत्येक बूलियन मैट्रिक्स रिटर्न एक आइटम के रूप:

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 तार्किक मैट्रिक्स है के रूप में एक ही बात देता है।

एक और विकल्प परिणामों को तीन आयामी तार्किक मैट्रिक्स (4 9 * 26 * 26) के रूप में स्टोर करना है जहां प्रत्येक टुकड़ा F के मानों में से एक के अनुरूप है।

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 अच्छी तरह से काम करता है! मैं लागू परिवार के दस्तावेज़ीकरण और इसके वाक्यविन्यास में आगे जाऊंगा। –

संबंधित मुद्दे