语言R让我困惑.实体具有模式和类,但即使这不足以完全描述实体.
这个答案说
在R中,每个"对象"都有一个模式和一个类.
所以我做了这些实验:
> class(3)
[1] "numeric"
> mode(3)
[1] "numeric"
> typeof(3)
[1] "double"
Run Code Online (Sandbox Code Playgroud)
到目前为止公平,但后来我传入了一个向量:
> mode(c(1,2))
[1] "numeric"
> class(c(1,2))
[1] "numeric"
> typeof(c(1,2))
[1] "double"
Run Code Online (Sandbox Code Playgroud)
这没有意义.当然,整数向量应该具有与单个整数不同的类或不同的模式吗?我的问题是:
更新:显然,文字3只是长度为1的向量.没有标量.好吧但是......我试过mode("string")了"character",让我觉得字符串是一个字符向量.但如果这是真的,那么这应该是真的,但事实并非如此!c('h','i') == "hi"
有人可以澄清为什么typeof(data.frame)在R中显示列表?相反,类给出了预期的类型.例如,演示使用内置的data.frame mtcars.
> typeof(mtcars)
[1] "list"
> class(mtcars)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)
有关如何使用typeof与class的任何提示?
我怎么知道R中的数据是列表还是data.frame?
如果我用typeof(x)它说列表,如果我用class(x)它说data.frame?
我是 R 新手,正在尝试阅读 csv。该文档显示了一个函数read.csv()。但是,当我读取文件并检查变量的类型时,它会显示一个列表。文档将其显示为data.frame. 有人可以解释为什么会这样吗?
到目前为止我的代码:
mytable<-read.csv(InputFile,header=TRUE,stringsAsFactors=FALSE)
dim(mytable)
typeof(mytable)
Run Code Online (Sandbox Code Playgroud)
输出:
dim(mytable)
[1] 500 20
typeof(mytable)
[1] "list"
Run Code Online (Sandbox Code Playgroud) 好吧问题就是这一切..如果给定的函数参数是xts或数据框类型,我想检查我的一个函数.我怎样才能做到这一点?
是否有简明(但相当彻底)的教程,以使某人习惯在MATLAB中工作,快速编写R代码.
这是我想到的一个特殊问题:根据我对R文档和教程的有限经验,我对R中的数据类型以及如何操作它们留下了很多困惑.例如,什么是向量,矩阵,列表,数据框等,以及它们如何相关.我没有找到明确解释基本数据类型的来源,以至于我想知道语言是否因设计而模糊不清.
我只是习惯将行作为一个单位/记录,并且想知道为什么它是面向列的。或者,如果我误解了一点,请提出。
我以为数据帧是一系列的行,例如(臭氧,Solar.R,风,温度,月,日)。
> c ## data frame created from read.csv()
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
> typeof(c)
[1] "list"
Run Code Online (Sandbox Code Playgroud)
但是,当对c应用lapply()以显示每个列表元素时,它是一列。
> lapply(c, function(arg){ return(arg) })
$Ozone
[1] 41 36 12 18 23 …Run Code Online (Sandbox Code Playgroud)