Я использую for-loop
для просмотра списка фреймов данных. Внутри цикла я фильтрую каждый набор данных (включая столбцы даты), а затем вывод используется для вычислений (включая цикл ifelse
). Моя проблема заключается в том, что когда-то на выходе фильтра не имеет ни одной строки (пустой набор данных), а затем он остановил for-loop
с ошибкойИспользование цикла ifelse с столбцом даты в R
Error in as.POSIXct.numeric(value) : 'origin' must be supplied
здесь некоторый код, чтобы воспроизвести сообщение об ошибке.
data1 <- data.frame(Date = as.Date("2016-01-01"), Filter1= 6)
data2 <- data.frame(Date = as.Date("2016-01-01"), Filter1= 3)
anomalies <- subset(data1, Filter1 <= 3) #won't work with the loop
anomalies <- subset(data2, Filter1 <= 3) #work with the loop
if(is.data.frame(anomalies) & nrow(anomalies)==0) {
anomalies[1, ] <- 0
} else{
anomalies <- anomalies
}
data2 будет работать, но если я бегу data1 я получаю
Error in as.Date.numeric(value) : 'origin' must be supplied
Я пытался отформатировать дату перед и внутри ifelse
цикла, но без успеха. Я знаю несколько вопросов по ifelse
и date
по SO, но ни один не имеет отношения к пустым кадрам данных. Любая помощь в том, как исправить (или альтернативу) будет очень благодарна!
Не могли бы вы привести пример исходной задачи, которую вы выполняете? Я сомневаюсь, что вам нужен цикл for, и эту пустую проблему с data.frame можно просто избежать. –
Вы пытаетесь присвоить 0 фрейму данных этим утверждением? аномалии [1,] <- 0 – dikesh
, возможно, опубликуйте полный образец кода того, что вы пытаетесь достичь, поэтому люди могут предложить еще лучшие способы сделать это, например, за пределами проблемы as.POSIXct.numeric (value). – shekeine