鉴于从数据框中隔离出一个变量,如何获得它的名称? 它需要在内部完成索引的函数中工作(例如,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'))
答案 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)