Превратить col в rownames в списке фреймов данных - PullRequest
1 голос
/ 29 мая 2020

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

К сожалению, я не могу заставить его работать, может кто-то может помочь?

DF1 <- data.frame(A = c("A", "B", "C"),
                  B = 1:3)
DF2 <- data.frame(A = c("A", "B", "C"),
                  B = 1:3)
TheList <- list(DF1 = DF1,
                DF2 = DF2)
col_to_rownames_andDel <- function(df){
  rownames(df) <- df$A
  df$A <- NULL
}

TheList_namedRows <- map(TheList, col_to_rownames_andDel) #not working and empties the dfs

Спасибо!

Себастьян

Ответы [ 4 ]

1 голос
/ 29 мая 2020

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

col_to_rownames_andDel <- function(df){
  rownames(df) <- df$A
  df$A <- NULL
  return(df)
}

TheList_namedRows <- map(TheList, col_to_rownames_andDel)

Отладка Rubber duck в лучшем виде.

1 голос
/ 29 мая 2020

Вы также можете:

map(.x = TheList,
    ~ .x %>%
    column_to_rownames("A"))

$DF1
  B
A 1
B 2
C 3

$DF2
  B
A 1
B 2
C 3
1 голос
/ 29 мая 2020

Вернуть измененный фрейм данных в последней строке функции.

col_to_rownames_andDel <- function(df){
   rownames(df) <- df$A
   df$A <- NULL
   return(df)
}

TheList_namedRows <- purrr::map(TheList, col_to_rownames_andDel)
#Using lapply
#TheList_namedRows <- lapply(TheList, col_to_rownames_andDel)

TheList_namedRows
#$DF1
#  B
#A 1
#B 2
#C 3

#$DF2
#  B
#A 1
#B 2
#C 3
0 голосов
/ 29 мая 2020

Мы можем использовать column_to_rownames из tibble

library(tibble)
library(purrr)
map(TheList,  column_to_rownames, "A") 
#$DF1
#  B
#A 1
#B 2
#C 3

#$DF2
#  B
#A 1
#B 2
#C 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...