Цикл по фреймам данных без использования списка в r - PullRequest
0 голосов
/ 30 января 2020

Я импортирую несколько сотен текстовых файлов, где мне нужно очистить имена столбцов.

t1 <- data.frame("A")
t2 <- data.frame(2)
names(t1) <- "COL one"
names(t2) <- "Col two"

Я мог бы сделать это в виде списка и лаппинга, но впоследствии мне нужно присоединиться к фреймам данных и предпочел бы не присоединяться к списку.

f <- list(t1=t1,t2=t2)
f2 <- lapply(f,janitor::clean_names)
  1. Есть ли метод, который я могу использовать для l oop над фреймами данных, применить функцию и вернуть отдельные data.frames?
  2. Могу ли я как-то привести список f2 обратно в фреймы данных t1 и t2?

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Вы можете использовать eval(parse(text=)) для этого, но ваша среда должна иметь только эти data.frames. Затем вы можете заменить NULL на любое имя, которое вы хотите назвать.

Я думаю, вы можете сохранить эти кадры данных в определенной среде c и запустить его в отдельном пространстве, но я не пробовал пока.

t1 <- data.frame("A")
t2 <- data.frame(2)
names(t1) <- "COL one"
names(t2) <- "Col two"

l = ls() 
# note : you can also precise what you want in this vector of course, like so:
# l <- c('t1', 't2')

for(i in l){
  eval(parse(text = paste0('colnames(',i,')=NULL')))
}

t2
#   
# 1 2
2 голосов
/ 30 января 2020

Только ради любопытства:

dataframe_names <- c('t1', 't2')
#OR if you have more dataframes
#dataframe_names <- ls(pattern = '^t\\d+')

for (i in dataframe_names) {
   assign(i, janitor::clean_names(get(i)))
}

t1
#  col_one
#1       A

t2
#  col_two
#1       2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...