Разные способы выбора столбцов внутри функции, приводящие к разным результатам, почему? - PullRequest
0 голосов
/ 11 мая 2019

Я написал короткую функцию для очистки некоторых фреймов данных, которые у меня есть в списке. При выборе столбцов методом df [, 1] моя функция не работает. Однако, когда я выбираю с помощью df $ Column, он делает. Почему это?

columns_1 <- function(x) {
  x[,1] <- dmy_hm(x[,1])
  x[,2] <- NULL
  x[,3] <- as.numeric(x[,3])
  x[,4] <- NULL
  return(x)
}

MS_ <- lapply(MS_, columns_1)


columns_2 <- function(x) {
  x$DateTime <- dmy_hm(x$DateTime)
  x$LogSeconds <- NULL
  x$Pressure <- as.numeric(x$Pressure)
  x$Temperature <- NULL
  return(x)
}

MS_ <- lapply(MS_, columns_2)

Функция columns_2 выдает желаемые результаты (все кадры данных в списке очищаются). columns_1 возвращает сообщение об ошибке:

Error in FUN(X[[i]], ...) : 
  (list) object cannot be coerced to type 'double'
In addition: Warning message:
All formats failed to parse. No formats found.

1 Ответ

2 голосов
/ 11 мая 2019

Проблема заключается в том, что назначение было выполнено после первого запуска, и здесь некоторые столбцы были потеряны.

library(lubridate)
MS_ <- lapply(MS_, columns_1)

Вместо этого это можно сделать, назначив другой объект

* 1005.*

данные

set.seed(24)
df1 <- data.frame(DateTime = format(Sys.Date() + 1:5, "%d-%m-%Y %H:%M"),
    LogSeconds = 1:5, 
    Pressure = rnorm(5), Temperature = rnorm(5, 25),
             stringsAsFactors = FALSE)
MS_ <- list(df1, df1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...