为什么具有相同类型和值的变量print()会有所不同?

时间:2015-02-02 04:08:09

标签: r

当作为print()函数的参数给出时,似乎具有相同类型和值的变量会产生不同的行为。

#!/usr/bin/env Rscript

a <- quantile(c(1), 1.0)
b <- c(1)

stopifnot(a == b)

print(class(a))
print(a)
print(class(b))
print(b)

以上将产生以下内容。

[1] "numeric"
100%
   1
[1] "numeric"
[1] 1

不知何故print()知道a是分位数,b即使这些信息在其值或class()报告的类型中不可用,也不会。发生了什么事?是否存在与ab相关联的某种其他类型信息?

我对R文档的理解是,ab都是vector类型,其中包含numerical模式的组件,并且所有组件都是{{1}}模式了解他们的类型。

1 个答案:

答案 0 :(得分:1)

另外,试着看看:

names(a)
#[1] "100%"

attributes(a)
#$names
#[1] "100%"

这与对象的classmodetype无关。 quantile()有一个names=参数,如果设置,它会附加到输出,默认情况下是?quantile

names: logical; if true, the result has a ‘names’ attribute.  Set to
       ‘FALSE’ for speedup with many ‘probs’.