Как сохранить имена заголовков после запуска цикла - PullRequest
0 голосов
/ 20 февраля 2019

Следующий скрипт создает срединные значения для каждого столбца набора данных mtcars, но без имен заголовков.Как сохранить имена заголовков после запуска цикла for в кадре данных?

output_mtcars <- vector("double", ncol(mtcars))
for(i in seq_along(mtcars)) {
  output_mtcars[[i]] <- mean(mtcars[[i]])
}

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Обе базы R sapply и purrr::map_dbl сохранят здесь имена:

sapply(mtcars, mean)
purrr::map_dbl(mtcars, mean)
0 голосов
/ 20 февраля 2019

Если вы действительно хотите использовать цикл, вы можете использовать setNames():

output_mtcars <- setNames(vector("double", ncol(mtcars)), names(mtcars))
for (i in seq_along(mtcars)) {
  output_mtcars[[i]] <- mean(mtcars[[i]])
}

output_mtcars
#       mpg        cyl       disp         hp       drat         wt       qsec         vs         am       gear       carb 
# 20.090625   6.187500 230.721875 146.687500   3.596563   3.217250  17.848750   0.437500   0.406250   3.687500   2.812500 
0 голосов
/ 20 февраля 2019

Используя список вместо вектора, мы можем добиться этого в цикле:

output_mtcars <- list("double", ncol(mtcars))
for(i in seq_along(mtcars)) {
  output_mtcars[[i]] <- mean(mtcars[[i]])
  names(output_mtcars[[i]]) <- names(mtcars[i])
}

> output_mtcars
[[1]]
     mpg 
20.09062 

[[2]]
   cyl 
6.1875 

[[3]]
    disp 
230.7219 

[[4]]
      hp 
146.6875 

[[5]]
    drat 
3.596563 

....

Или вы можете просто переименовать вектор после цикла:

output_mtcars <- vector("double")
for(i in seq_along(mtcars)) {
  output_mtcars[[i]] <- mean(mtcars[[i]])
}

names(output_mtcars)<-names(mtcars)

> output_mtcars
       mpg        cyl       disp         hp       drat         wt       qsec 
 20.090625   6.187500 230.721875 146.687500   3.596563   3.217250  17.848750 
        vs         am       gear       carb 
  0.437500   0.406250   3.687500   2.812500 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...