2012-04-15 17 views
15

के भीतर से एक ही पंक्ति पर एकाधिक चर के लिए प्रिंट मान प्रिंट करें मेरे पास एक प्रश्न है जो निश्चित रूप से बहुत ही मामूली प्रतीत होता है, लेकिन उत्तर ने हमेशा मुझे बताया है: आप एक ही पंक्ति पर एकाधिक चर के लिए मूल्य कैसे मुद्रित करते हैं एक लूप के भीतर?फॉर-लूप

मैं दो समाधान प्रस्तुत करता हूं जिनमें से कोई भी प्रारूपित print कथन से अधिक कुछ नहीं पर निर्भर करता है, और मुझे अभी भी दिलचस्पी है कि print, वांछित प्रारूप में आउटपुट वापस करने के लिए उपयोग किया जा सकता है या नहीं।

सबसे पहले मैं for-loop है, जो एक ही समाधान होता है प्रस्तुत करते हैं, और फिर मैं एक समारोह है कि एक और समाधान का प्रतिनिधित्व करता है मौजूद:

P <- 243.51 
t <- 31/365 
n <- 365 

for (r in seq(0.15, 0.22, by = 0.01)) { 

    A <- P * ((1 + (r/ n))^ (n * t)) 
    interest <- A - P 

    # this prints each variable on a separate line 
    print (r) 
    print (interest) 

    # this does not work 
    # print c(r, interest) 

    # this presents both variables on the same line, as desired 
    output <- c(r,interest) 
    print(output) 

    # EDIT - I just realized the line below prints output in the desired format 
    print (c(r, interest)) 

} 


# this function also returns output in the desired format 

data.fn <- function(r) { 

    interest <- P*(1+(r/ n))^(n*t) - P 
    list(r = r, interest = interest) 

} 

my.output <- as.data.frame(data.fn(seq(0.15, 0.22, by = 0.01))) 
my.output 

#  r interest 
# 1 0.15 3.121450 
# 2 0.16 3.330918 
# 3 0.17 3.540558 
# 4 0.18 3.750370 
# 5 0.19 3.960355 
# 6 0.20 4.170512 
# 7 0.21 4.380842 
# 8 0.22 4.591345 

वहाँ for-loop ताकि print बयान में print बयान फ़ॉर्मेट करने के लिए एक रास्ता है, अपने आप से, my.output में प्रारूपित आउटपुट लौटाता है? मुझे पता है कि मैं फॉर-लूप के अंदर एक मैट्रिक्स भी डाल सकता हूं जो r और interest के मानों को संग्रहीत करता है और फिर लूप समाप्त होने के बाद मैट्रिक्स प्रिंट करता है। हालांकि, मैंने सोचा कि print कथन का उपयोग करना आसान होगा, खासकर जब मुझे r या interest के मानों को बनाए रखने की आवश्यकता नहीं है।

किसी भी सलाह के लिए धन्यवाद। क्षमा करें फिर से यह सवाल बहुत छोटा है। मैंने विस्तारित अवधि के उत्तर के लिए काफी कुछ खोजा है, लेकिन समाधान कभी नहीं मिला है। शायद मैंने अतिरिक्त पोस्ट समाधान ओवरकिल बनाने के लिए इस पोस्ट में पर्याप्त समाधान प्रस्तुत किए हैं। फिर भी, मैं दिलचस्पी रखता हूं।

संपादित करें:

सहायक प्रतिक्रियाओं के अलावा नीचे मैं सिर्फ महसूस किया कि का उपयोग करते हुए:

print (c(r, interest)) 

ऊपर for-loop में भी काम करता है।

+0

प्रिंट के बजाय बिल्ली पर नज़र डालें। –

+0

धन्यवाद। सभी प्रतिक्रिया बहुत अच्छी थी। यही कारण है कि मैं इस साइट से प्यार करता हूँ। –

उत्तर

15

अपने लूप में cat और sprintf आज़माएं।

उदाहरण के लिए।

cat(sprintf("\"%f\" \"%f\"\n", df$r, df$interest)) 

here

3

देखें एक अतिरिक्त नोट के रूप में, के लिए कोई जरूरत नहीं है आर के vectorization की वजह से पाश के लिए।

यह:

P <- 243.51 
t <- 31/365 
n <- 365 
r <- seq(0.15, 0.22, by = 0.01) 
A <- P * ((1 + (r/ n))^ (n * t)) 
interest <- A - P 

क्योंकि r एक वेक्टर, युक्त यह वेक्टर के सभी मानों के लिए किया जाता है इसके बाद के संस्करण अभिव्यक्ति है:

P <- 243.51 
t <- 31/365 
n <- 365 

for (r in seq(0.15, 0.22, by = 0.01))  
    A <- P * ((1 + (r/ n))^ (n * t)) 
    interest <- A - P 
} 

के बराबर है।