2013-07-16 33 views
0

我想對變量xlength(x)>12000進行排序。當我運行對變量的值進行排序而不顯示數據

sort(x) 

來自RStudio,r控制檯開始顯示結果。有沒有一種方法可以在不顯示排序數據的情況下進行排序?

+2

爲什麼不把它作爲一個新的變量存儲? 'y < - sort(x)'? – A5C1D2H2I1M1N2O1R2T1

+2

你可以使用'invisible(sort(x))',但我不明白爲什麼,除非你的函數通過引用更新值。 – Arun

+0

@AnandaMahto我是新手,我現在明白了。 – Duna

回答

1

我瞭解到,我可以簡單地將排序數據存儲在一個新變量中;如y <- sort(x)。使用invisible(sort(x))也是另一種選擇。

+1

除了後者沒有做任何有用的事情,因爲'sort(x)'不會修改'x'。 –

3

我認爲這裏有一個更廣泛的問題,那就是R REPL。你看到你在R解釋器中的Read-Eval-Print Loop中。它所做的是:

  • 讀取你給輸入:sort(x)
  • 評估輸入:找到排序向量。
  • 打印輸出。
  • 循環。

因此,當您在解釋器中創建有效的object時,無論您是否明確地調用print,它都會打印出來。

> x <- 5 
> x 
[1] 5 
> print(x) 
[1] 5 

不會得到打印的唯一的事情就是一個分配因爲,技術上,這是一個副作用。因此第一條語句x <- 5沒有說什麼。

這裏有一個有趣的玩具而已:

> f1 <- function (x) x 
> f2 <- function (x) y <- x 

> f1(5) 
[1] 5 

> f2(5) # Nothing 

的細微差別是,F1明確return小號x而F2只用x的副作用。但是,如果您要做identical(f1(5), f2(5)),您將獲得TRUE

希望這會有所幫助。 :)

+2

這不完全正確。 'f2'返回最後一條語句的值,但是這樣做是不可見的。試試這個:'f2(5); .Last.value'來查看該值是否可用。 –

+0

我同意。這就是爲什麼我在那裏加上'identical(f1(5),f2(5))'的原因。 – asb

相關問題