R核心库中有两个功能.
然而,对于该文档row.names指定对于数据帧,"rownames"和"colnames"最终调用"row.names"和"名称",但后者是优选的.为什么是row.names首选?是不是更容易忽略row.names而只是打电话rownames?
Gor*_*yth 17
row.names()是一个S3泛型函数,rownames()而是一个较低级别的非泛型函数.rownames()实际上,默认方法row.names()是在没有更具体方法的情况下应用于任何对象.
如果您在数据帧上操作x,则使用它会更有效,row.names(x)因为有一种特定row.names()的数据帧方法.row.names()数据帧的方法只是提取"row.names"已存储的属性x.相比之下,由于rownames()函数的定义和相互关系,rownames(x)必须提取所有维度名称x,然后删除列名称,然后结合使用names(x),然后names(x)再次删除.这个过程甚至涉及到row.names(x)作为中间步骤的呼吁.这通常会很快发生,你没有注意到它,但只是提取属性显然更有效.
如果您不想打扰区分这两个函数,那么row.names()始终只使用泛型版本是合乎逻辑的,因为它总是调度适当的方法.例如,if x是一个矩阵,然后row.names(x)只是干净地通过,rownames(x)因为没有更具体的方法用于该类对象.