2016-03-15 3 views
1

У меня есть dataframes и вы хотите передать их как параметр для обработки в функции. Скажем, есть 4 кадра данных и хотите переименовать первые столбцы в «ROWNUM».R - Передача списка имени dataframe в функцию

df1 = data.frame(c(1:10),sample(1:100,10)) 
df2 = data.frame(c(1:10),sample(1:100,10)) 
df3 = data.frame(c(1:10),sample(1:100,10)) 
df4 = data.frame(c(1:10),sample(1:100,10)) 

function(df) colnames(df)[1] = 'ROWNUM' 

Моя цель состоит в том, я хочу переименовать в одном кадре, а не проходя один за другим

Спасибо.

ответ

1

Мы можем использовать lapply продержав наборы данных в list

nm1 <- ls(pattern="df\\d+") 
lst <- lapply(mget(nm1), function(x) { 
      colnames(x)[1] <- 'ROWNUM' 
      x}) 

Это лучше держать наборы данных в list, но если нам необходимо обновить исходные наборы данных

list2env(lst, envir=.GlobalEnv) 

Или мы используем assign

for(j in seq_along(nm1)){ 
assign(nm1[j], `names<-`(get(nm1[j]), 
      c("ROWNUM", names(get(nm1[j]))[-1]))) 
} 
Смежные вопросы