Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R typeof()和class()函数的区别是什么,它们在什么时候使用?_R_Class - Fatal编程技术网

R typeof()和class()函数的区别是什么,它们在什么时候使用?

R typeof()和class()函数的区别是什么,它们在什么时候使用?,r,class,R,Class,我编写了一个函数,我认为它决定了mtcars数据集每列中的类型数据 column_type <- vector("character", ncol(nycflights13::flights)) for(i in seq_along(nycflights13::flights)){ column_type[[i]] <- typeof(nycflights13::flights[[i]]) } column_type 但是在我正在使用的书中,解决方案是使用函数class()而不

我编写了一个函数,我认为它决定了mtcars数据集每列中的类型数据

column_type <- vector("character", ncol(nycflights13::flights))
for(i in seq_along(nycflights13::flights)){
  column_type[[i]] <- typeof(nycflights13::flights[[i]])
}
column_type
但是在我正在使用的书中,解决方案是使用函数class()而不是typeof编写的。结果略有不同

output <- vector("list", ncol(nycflights13::flights))
names(output) <- names(nycflights13::flights)
for (i in names(nycflights13::flights)) {
  output[[i]] <- class(nycflights13::flights[[i]])
}
output
#> $year
#> [1] "integer"
#> 
#> $month
#> [1] "integer"
#> 
#> $day
#> [1] "integer"
#> 
#> $dep_time
#> [1] "integer"
#> 
#> $sched_dep_time
#> [1] "integer"
#> 
#> $dep_delay
#> [1] "numeric"
#> 
#> $arr_time
#> [1] "integer"
#> 
#> $sched_arr_time
#> [1] "integer"
#> 
#> $arr_delay
#> [1] "numeric"
#> 
#> $carrier
#> [1] "character"
#> 
输出
#>美元月
#>[1]“整数”
#> 
#>美元日
#>[1]“整数”
#> 
#>$dep_时间
#>[1]“整数”
#> 
#>$sched_dep_时间
#>[1]“整数”
#> 
#>$dep_延迟
#>[1]“数字”
#> 
#>$arr_时间
#>[1]“整数”
#> 
#>$sched_arr_时间
#>[1]“整数”
#> 
#>$arr_延迟
#>[1]“数字”
#> 
#>$carrier
#>[1]“字符”
#> 
我知道typeof()提供了基元向量的类型(因此它不包括数据帧、tibbles、factors、日期或日期时间)

class()为您提供了类,这是描述或指定对象的另一种方式?那么这是另一个属性

我的问题是,哪个解决方案更正确,为什么?什么时候使用类与向量类型(通过使用typeof()找到?

Related:,“哪个解决方案更正确?”完全是主观的和上下文相关的。我不认为你会找到一个结论性的答案,KevinLee,因为它们的所有用途。如果你只关心
double
integer
之间的差异,那么
typeof
是有效的(长度总是1!);如果您需要了解
list
data.frame
之间的区别,那么
class
继承(…)
就是您需要的。相关:,“哪个解决方案更正确?”完全是主观的和上下文相关的。我不认为你会找到一个结论性的答案,KevinLee,因为它们的所有用途。如果你只关心
double
integer
之间的差异,那么
typeof
是有效的(长度总是1!);如果您需要了解
list
data.frame
之间的区别,那么
class
继承(…)
就是您所需要的。
output <- vector("list", ncol(nycflights13::flights))
names(output) <- names(nycflights13::flights)
for (i in names(nycflights13::flights)) {
  output[[i]] <- class(nycflights13::flights[[i]])
}
output
#> $year
#> [1] "integer"
#> 
#> $month
#> [1] "integer"
#> 
#> $day
#> [1] "integer"
#> 
#> $dep_time
#> [1] "integer"
#> 
#> $sched_dep_time
#> [1] "integer"
#> 
#> $dep_delay
#> [1] "numeric"
#> 
#> $arr_time
#> [1] "integer"
#> 
#> $sched_arr_time
#> [1] "integer"
#> 
#> $arr_delay
#> [1] "numeric"
#> 
#> $carrier
#> [1] "character"
#>