2011-06-30 90 views
-1

我正在使用R或開始使用R.我做了一些使用for循環的腳本,如果...並且我對結果感到滿意。R代碼獨立結果

現在我遇到的問題是,在控制檯中,我將擁有所有的代碼行(大約150行),當我真的只對4行感興趣時,我的結果。

無論如何清理控制檯只看到一些請求的行嗎?而不是所有的代碼?如果沒有,我正在考慮將它們保存在csv文件中,並訪問csv文件以查看腳本的結果,但效率並不高。

在此先感謝

澤維爾

+3

有些問題:你使用什麼編輯器?你如何發送線路給R?你使用Rterm還是Rgui?你必須在那一個更具體。 –

回答

7

我預計這將取決於你的「結果」如何在控制檯,和所有其餘的是否是真正的「代碼」。這4行是貓/打印語句的結果嗎?然後,您可以查看?sink將結果發送到文件。

另一種方法是將這些結果存儲在變量(例如列表)中,並在所有計算結束時打印此列表。之後應該很容易做到分離。

+0

是的,他們是貓/打印。謝謝 – Xavier

+1

我同意尼克的回答 - 如果你在未來的多個場合需要相同的結果,你應該真的讓你的代碼在變量中緩存相關信息。如果你只是想要一個快速和骯髒的一次性解決方案,使用接收器的建議是正確的 - 那麼你可以在生成的文件上運行'grep'或任何搜索工具。 – Sasha

4

您正在腳本編輯器中編寫代碼,而不是在控制檯中?另一種選擇是在腳本上使用source(),該腳本將運行整個腳本,但不會顯示在控制檯(僅限輸出)中。 RStudio(我強烈建議你使用R; http://rstudio.org/)有一個「源文件」按鈕或類似的東西。

但更重要的是,讓R明確地返回結果是學習如何在R中編程的重要組成部分。您還希望您的腳本對其他人清楚!有些解決方案可能會使某些代碼塊成爲function,或者Nick建議將結果存儲在list中。

3

對於我來說,我會把你的代碼的功能,這將有效地隱藏,因爲它是運行控制檯的代碼,代碼的結果存儲到一個變量,然後是保存到一個文件

foo <- function(x) { 
    result<-0 
    for(i in 1:length(x)){ 
     result<-result+x[i] 
    } 
    return(result) 
} 

bar <- foo(x=c(2,3,4,5,4,3,2,3,4,5)) 
write.csv(bar, "resultfile.csv")