2016-07-05 34 views
-2

請看下面的代碼中的R把打印在重複中的R

i=1 
a1=function(x){ 
    print(i) 
    i=i+1 
    return(x^2)} 
a2=replicate(5,a1(2)) 

我希望有一個輸出1 2 3 4 5

誰能幫助我?但是我不想寫for-loops。我希望保持原樣的複製功能。感謝您的建議/幫助。

+2

你不能改變的價值'i'一個函數內。你想做什麼?只需打印一系列數字? – Psidom

+0

是的,我希望有一個計數。請理解,這是一個MWE – Sayan

+1

事情是有很多方法可以做到這一點,但可能不會用'replicate'。 'for'循環,'apply'系列或'遞歸'函數都可以完成任務,但最終可能並不是你想要的。 – Psidom

回答

0

您可以通過全局變量賦值做到這一點:

i=1 
a1=function(x){ 
    print(i) 
    i<<-i+1 
    return(x^2)} 
a2=replicate(5,a1(2)) 
# [1] 1 
# [1] 2 
# [1] 3 
# [1] 4 
# [1] 5 

這是不是真的,你應該如何把它。

取決於你真正努力去做,這樣可以工作:

res <- sapply(1:5, print)