Используйте lapply для просмотра списка фреймов данных и изменения класса определенного столбца.

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

tom <- data.frame(a = c(1,2,3), b = c("2017-01-09","2017-01-10","2017-09-11"))
kate <- data.frame(a = c(4,5,6), b = c("2017-01-09","2017-01-10","2017-09-11"))

testList <- list(tom,kate)

f <- lapply(testList, function(x) {
    x[,2] <- as.Date(x[,2])
})

Я ищу f, чтобы вернуть исходные кадры данных, но с изменением класса для столбцов 2. Вместо этого я получаю список только с датами (не исходные кадры данных). Какие-нибудь мысли?

1 ответ

Решение

Нам нужно вернуть "х" или list элемент в 'F'

f <- lapply(testList, function(x) {
      x[,2] <- as.Date(x[,2])
      x
})

Более компактный вариант без использования анонимного вызова функции transform

f1 <- lapply(testList, transform, b = as.Date(b))
Другие вопросы по тегам