2015-03-08 8 views
0

Я хотел бы префикс номера столбцов для имен столбцов в фрейме данных. Каков наилучший способ сделать это?Префикс индекс столбца к именам столбцов в списке фреймов данных

Например, я хотел бы что-то вроде «1_mpg», «2_cyl» в следующей таблице:

structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame") 

А потом, как о расширении, что список фреймов данных?

list(structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"), 
structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
"cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame")) 

ответ

0

Вот что я закончил с использованием (хотя я предполагаю, что есть что-то более элегантное):

# sample list of 2 data frames 
x = 
    list(structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
    "cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame"), 
    structure(list(mpg = c(21, 21), cyl = c(6, 6)), .Names = c("mpg", 
    "cyl"), row.names = c("Mazda RX4", "Mazda RX4 Wag"), class = "data.frame")) 

# create function to append an index to column names 
newColNames = function(a) { 
      b=lapply(seq_along(colnames(a)), 
      function(i) paste(i,"_",colnames(a)[i],sep="")) 
      colnames(a)=b 
      return(a) 
      } 

# apply function 
new_list = lapply(x, function(y) newColNames(y)) 
Смежные вопросы