a<-c(AA=4.7,BB=2,CC=7.5)
typeof(a) #double
对象是什么&#34; a&#34;?这是数字向量,字符串向量还是列表?
答案 0 :(得分:1)
使用以下功能检查班级,模式,类型等。在你的情况下:
class(a)
[1] "numeric"
mode(a)
[1] "numeric"
typeof(a)
[1] "double"
is.atomic(a)
[1] TRUE
is.list(a)
[1] FALSE
从官方R帮助页面:
R是一个历史异常,它的浮点有两个名字 向量,双重和数字(以前有真实的)。
double是该类型的名称。 numeric是模式的名称和 也是隐含的类。
有关更多信息,请在控制台中键入help("double")
。
答案 1 :(得分:1)
我认为您对atomic vector
/ vector
和lists
感到困惑。我认为@nicola正确地指出了评论中的向量。在R中,当我们说向量时,它实际上意味着它是原子向量还是列表。您可以通过检查它们的3个属性即类型,长度和属性来确定它们。
因此,要检查对象是否为向量,您必须检查:is.atomic(x) || is.list(x)
。当然在你的情况下它是正确的。这表明它是原子类型的载体。
除此之外,原子向量还主要分为整数,逻辑,双(数字)和字符。
如果要确定特定类型(如整数,逻辑等),请使用typeof()
。
现在还有两件事你可以检查class
和mode
。
class()
用于从面向对象编程的角度来识别对象的“类型”,你会发现class
有时是type
的超集。例如在你的情况下,“a”基本上是类numeric下的“double”类型对象。
mode()
从作者的角度给出了对象的“类型”。
现在回答你的问题:
对象“a”在类numeric中是double类型。您可以通过在控制台上运行typeof(a)和class(a)来检查它。
r中还有另一个名为storage.mode
的内容,来自?storage.mode
的文档:
mode和storage.mode都返回一个给出的字符串 对象的(存储)模式 - 通常是相同的 - 都依赖于 typeof(x)的输出
请阅读Hadley Wickham的“Advanced R”,我学到的大部分内容仅来自那本书。链接是here。您可能还想查找R Language Definition。
注意:我希望我清楚自己想传达的内容。如果有人发现我的理解有任何错误,请告诉我。但据我所知,我几乎可以肯定这是在R中查找对象的方式。
答案 2 :(得分:1)
基本上,你有一个命名向量,它仍然是一个数字向量。您不希望数据帧的列成为字符,因为它的名称是字符串。这里也是如此。
要清楚,请尝试
names(a)
unname(a)
答案 3 :(得分:0)
您可以通过以下方式查看:
class(a)
您使用的代码用于创建向量,然后代码class(a)
应该说a是向量。