我有以下跟踪号码的功能。在不同的日子里,由一个人在城市和城镇中运行。我有3列。身份证(一个人)城市镇。对于相同的身份证号码,我有不同的英里数值,如果没有英里跑过的话,可以在INA城市和城市或NA中使用。因此,对于ID = 1的城市和城镇,我可以在ID = 1的多行中使用不同的值,对于ID = 2等,也可以使用相同的值。我有一个每个Id 500个CSV文件,现在我需要计算IDS和IDS的组合,以下是我的功能。返回NA,尽管有效值为平均函数
milesmean <- function(directory, place, id = 1:500){
if(directory == "miledata"){
files <- list.files()
data <- list()
for (i in 1:500){
data[[i]] = read.csv(files[[i]])
}
req.data <- vector("list", length = length(id))
for(j in id){
req.data[[j]] <- data[[j]]$place
}
mean(unlist(req.data), na.rm=TRUE)
}
}
但是当我打电话milesmean( “miledata”, “城市”,1:10)我得到NA为值和报警信息
Warning message:
In mean.default(unlist(req.data), na.rm = TRUE) :
argument is not numeric or logical: returning NA
有什么理由? TIA。注:我只需要通过循环不使用lapply和其他类似的功能
原因给出的是警告信息:'unlist(req.data)'的最终值既不是数字也不是逻辑。从文件中读取数据时,应检查数据是否被导入为“字符”或“因子”。 – juba
但是,当我执行读取文件的内部代码,然后调用平均函数时,它只给我一个有效的值,只有当我把它放在一个func中我得到这个警告信息 – Arin