如何使用索引获取与data.frame隔离的变量的名称?

时间:2012-05-05 04:14:22

标签: r dataframe plyr

鉴于从数据框中隔离出一个变量,如何获得它的名称? 它需要在内部完成索引的函数中工作(例如,apply)。

df<-data.frame(a=1:10,b=1:10)

names(df[,1])

产生

>NULL

test<-df[,1]
test[0]

以下是一个有用的示例:

library(plyr)
relabel<-colwise(function(column){
  column<-paste(names(column),column)})
relabel(df)

给出

data.frame(a=c(.1,.2,.3,...), b=c(.1,.2,...))

期望的结果将是:

data.frame(a=c('a.1','a.2','a.3'), b=c('b.1','b.2', 'b.2'))

1 个答案:

答案 0 :(得分:4)

在索引中使用drop = FALSE参数,如:

df<-data.frame(a=1:10,b=1:10)

names(df[,1, drop=FALSE])

这是一个能够完成您所需要的功能:

namer.guy <- function(x) paste(rep(names(x), nrow(x)),  unlist(x), sep=".")

namer.guy(df[, 1, drop=F])

编辑:Per Etienne Low-Decarie的请求......

namer.guy2 <- function(df){
    name.paster <- function(i) paste(names(df)[i], df[, i], sep=".")
    DF <- data.frame(sapply(seq_along(df), name.paster))
    names(DF) <- names(df)
    return(DF)
}

namer.guy2(df)