【发布时间】:2014-08-28 17:32:22
【问题描述】:
我在一个目录中有小的 csv 文件。我需要从每个文件中计算 rmse 和 mse。
例如在 Barcelona.csv 中
City, RealMax, ForecastMax
Barcelona, 30, 29
Barcelona, 31, 29
Barcelona, 32, 31
Barcelona, 29, 29
Barcelona, 27, 29
我现在在 R 中有下一个代码
setwd("/home/enric/csv")
filenames <- list.files(pattern="*.csv", full.names=TRUE) ###I open all the files csv
ldf <- lapply(filenames, read.csv, header=FALSE)
length(ldf)
ldf
foo <- function(x) {
# Function that returns Root Mean Squared Error
rmse <- function(error) {
sqrt(mean(error^2,na.rm = TRUE))
}
# Function that returns Mean Absolute Error
mae <- function(error) {
mean(abs(error))
}
error <- x$V2 - x$V3
mae <- mae(error)
rmse <- rmse(error)
return( list( mae = mae, rmse = rmse))
}
res <-lapply(ldf, foo)
我收到这条关于因素的消息...
> res <-lapply(ldf, foo)
Warning messages:
1: In Ops.factor(x$V2, x$V4) : - not meaningful for factors
2: In Ops.factor(x$V2, x$V4) : - not meaningful for factors
如何将因子转换为数值以解决它?好吧,我认为这是问题所在,有什么帮助吗?
【问题讨论】:
-
有标题时为什么要使用 header = FALSE?整个 csv 文件被读取为转换为因子的字符串
-
现在,是的!我已更改为 TRUE