我记得读书的地方,as.tibble()
是一个别名的as_data_frame()
,但我不知道到底是什么的别名是在编程术语。它类似于包装纸吗?
因此,我想我的问题可能归结于tbl_df()
和之间的可能用法as_data_frame()
的区别:如果有,它们之间有什么区别?
更具体地说,给定一个(非标记)数据帧df
,我经常使用以下方法将其转换为标记:
df <- tbl_df(df)
不会
df <- as_data_frame(df)
做同样的事情?如果是这样,是否有其他案件的两种功能,其中tbl_df()
并as_data_frame()
不能互换使用,以获得相同的结果?
在R文件说,
tbl_df()
将参数转发给as_data_frame()
这是否意味着它tbl_df()
是包装器或别名as_data_frame()
?R文档似乎什么也没说as.tibble()
,我忘记了在哪里读到它是的别名as_data_frame()
。另外,显然 as_tibble()
是的另一个别名as_data_frame()
。
如果这四个功能确实都是相同的功能,那么给一个功能赋予四个不同的名称有什么意义?这不是很有帮助的吗?
要回答您的“是否令人困惑”问题,我认为是:)。
as.tibble
并且as_tibble
是相同的;两者都简单地调用S3方法as_tibble
:
> as.tibble
function (x, ...)
{
UseMethod("as_tibble")
}
<environment: namespace:tibble>
as_data_frame
并且tbl_df
不完全相同;tbl_df
电话as_data_frame
:
> tbl_df
function (data)
{
as_data_frame(data)
}
<environment: namespace:dplyr>
注tbl_df
是dplyr
同时as_data_frame
在tibble
包装:
> as_data_frame
function (x, ...)
{
UseMethod("as_data_frame")
}
<environment: namespace:tibble>
但是它当然会调用相同的函数,所以它们是“相同的”,也就是您所说的别名。
现在,我们来看一下通用方法as_tibble
和的区别as_data_frame
。首先,我们看一下每种方法:
> methods(as_tibble)
[1] as_tibble.data.frame* as_tibble.default* as_tibble.list* as_tibble.matrix* as_tibble.NULL*
[6] as_tibble.poly* as_tibble.table* as_tibble.tbl_df* as_tibble.ts*
see '?methods' for accessing help and source code
> methods(as_data_frame)
[1] as_data_frame.data.frame* as_data_frame.default* as_data_frame.grouped_df* as_data_frame.list*
[5] as_data_frame.matrix* as_data_frame.NULL* as_data_frame.table* as_data_frame.tbl_cube*
[9] as_data_frame.tbl_df*
see '?methods' for accessing help and source code
如果您查看的代码 as_tibble
,则可以看到许多as_data_frame
方法的定义。as_tibble
定义的,不以限定的两个额外的方法as_data_frame
,as_tibble.ts
和as_tibble.poly
。我不太确定为什么也不能为它们定义它们as_data_frame
。
as_data_frame
具有两个额外的方法,这是在两者定义dplyr
:as_data_frame.tbl_cube
和as_data_frame.grouped_df
。
as_data_frame.tbl_cube
使用较弱的as.data.frame
(是的,请忍受)检查然后致电as_data_frame
:
> getAnywhere(as_data_frame.tbl_cube)
function (x, ...)
{
as_data_frame(as.data.frame(x, ..., stringsAsFactors = FALSE))
}
<environment: namespace:dplyr>
同时as_data_frame.grouped_df
取消对传递的数据帧进行分组。
总体而言,除非您正在与或对象打交道,否则似乎as_data_frame
应该将其视为提供了其他功能。as_tibble
ts
poly
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句