【发布时间】:2015-04-30 20:58:00
【问题描述】:
是否有一个函数可以确定 data.frame 是否具有本机行名和列名或仅具有自动生成的 (1 2 3 4...) ?对于列名,“自动”意味着例如当您将“as.data.frame”应用于矩阵时..
对于行名,我想出了一个解决方法:
has.row.names = function(df) {
!all(row.names(df)==seq(1, nrow(df)))
}
但是,对于列名,我不知道该怎么做。困难在于有时自动 col.names 以 V1 V2 等开头,有时以 X1.、X2.. 开头。
编辑:为什么我会问这个问题:我需要在一个更复杂的函数(有点类似于 PCA 的图形输出)中执行这个测试,该函数将绘制行名和列名,如果现有的,如果没有,它将创建更合适的新名称。 所以它应该适用于“任何”data.frame,没有实际名称的线索..
谢谢。
【问题讨论】:
-
目的是什么?你真的会根据它是否自动生成而做一些不同的事情吗?它需要在任何数据框上工作吗?如果只是用 read.table 创建的,那么更精确地使用 read.table 可能会告诉你。
-
是的,需要适用于任何 df。这就是为什么我事先不知道他们。而且我不想要自动生成的列名和行名,这对情节来说会一团糟。
-
tibble包中的函数has_rownames现在可以处理行名
标签: r dataframe attributes rowname