当作为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()
报告的类型中不可用,也不会。发生了什么事?是否存在与a
和b
相关联的某种其他类型信息?
我对R文档的理解是,a
和b
都是vector
类型,其中包含numerical
模式的组件,并且所有组件都是{{1}}模式了解他们的类型。
答案 0 :(得分:1)
另外,试着看看:
names(a)
#[1] "100%"
和
attributes(a)
#$names
#[1] "100%"
这与对象的class
或mode
或type
无关。 quantile()
有一个names=
参数,如果设置,它会附加到输出,默认情况下是?quantile
names: logical; if true, the result has a ‘names’ attribute. Set to
‘FALSE’ for speedup with many ‘probs’.