2017-01-11 43 views
0

我有我在不同的步驟都計算一些數值,我想反覆總結他們:在elasped_time遞增我如何在r中反覆總結

elasped_time1<-10 
elasped_time2<-20 
elasped_time3<-40 
elasped_time4<-30 
elasped_time5<-20 
elasped_time6<-10 
elasped_time7<-20 
elasped_time8<-10 
elasped_time9<-30 
elasped_time10<-20 

現在我想反覆總結他們[I] ......

我嘗試這樣做:

n = 10 
for(i in 1:n){ 
x[i]=elasped_time[i] 
i=i+1 
print(total_time<-sum(x)) 
} 
cat("Total time taken to run the codes (seconds):",total_time) 

但悲慘地失敗了...需要幫助!

+1

您的'elapsed_time [i]'語法錯誤; 'elapsed_time1','elapsed_time2'等不是矢量的元素,而是單個變量。更好的方法不是將初始值存儲在單個變量中,而是存儲在向量中,然後很容易進行求和。 – adatum

回答

2

迭代命名的變量非常糟糕 - 它們會導致人們使用難以編寫代碼並且使用eval(parse(...))更難調試代碼。

你似乎想要一個名爲elapsed_time與一羣價值觀的載體:

elapsed_time = c(10, 20, 40, 30, 20, 10, 20, 10, 30, 20) 

現在你可以用elapsed_time[i]訪問第i個元素:

elapsed_time[2] 
# [1] 20 

,累計金額也很容易:

cumsum(elapsed_time) 
# [1] 10 30 70 100 120 130 150 160 190 210 
+0

我已經有了這個@Gregor inmy edits即將到來 –

+0

如果你編輯你的問題,建議在根目錄下解決問題(首先不要創建'elapsed_time1','elapsed_time2'等等),並強烈增加一些語言*阻止*使用'eval(parse(...))'我會很高興地刪除我的答案,並提升你的成績。 – Gregor

+0

我完全同意你的看法,但你能幫我理解爲什麼應該避免使用eval()。只是爲了我的理解 –