2013-07-16 29 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

相关问题