我在目录中有小的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
如何将因子转换为数字才能解决?嗯,我认为这是问题,有什么帮助吗?
答案 0 :(得分:0)
可能您没有以数字形式读取数据列。您可以使用str()
检查对象的结构和类。要在阅读文件时进行转换,请查看read.csv()
,especially stringAsFactors
的其他选项。您可以通过强制转换为数字来改变类:`as.numeric()'。