Цикл для преобразования разных столбцов во фреймах данных из списка - PullRequest
0 голосов
/ 24 ноября 2018

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

Может ли кто-нибудь мне помочь?

lapply(myfiles2[[]][[,c(2,3)]], as.numeric)

1 Ответ

0 голосов
/ 24 ноября 2018

Это не так сложно.Для этого необходимо выполнить цикл (lapply) по списку, изменив интересующие колонки каждого члена data.frame с другим вызовом lapply.

Сначала приведем пример набора данных, поскольку вы не опубликовали ни одного.

set.seed(1234)
myfiles2 <- lapply(1:4, function(i){
  data.frame(X = letters[1:5], Y = factor(sample(5)), Z = as.character(11:15))
})

str(myfiles2)    # output omited

Теперь проблема.

cols <- 2:3
myfiles3 <- lapply(myfiles2, function(DF){
  DF[cols] <- lapply(DF[cols], as.numeric)
  DF
})

Чтобы убедиться, что он работает, выполните одно из следующих действий.два сделают.

lapply(myfiles3, function(DF) sapply(DF, class))

str(myfiles3)
#List of 4
# $ :'data.frame':  5 obs. of  3 variables:
#  ..$ X: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
#  ..$ Y: num [1:5] 1 3 2 4 5
#  ..$ Z: num [1:5] 1 2 3 4 5
# $ :'data.frame':  5 obs. of  3 variables:
#  ..$ X: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
#  ..$ Y: num [1:5] 4 1 5 2 3
#  ..$ Z: num [1:5] 1 2 3 4 5
# $ :'data.frame':  5 obs. of  3 variables:
#  ..$ X: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
#  ..$ Y: num [1:5] 4 3 1 2 5
#  ..$ Z: num [1:5] 1 2 3 4 5
# $ :'data.frame':  5 obs. of  3 variables:
#  ..$ X: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
#  ..$ Y: num [1:5] 5 2 1 3 4
#  ..$ Z: num [1:5] 1 2 3 4 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...