Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取R中的值序列_R - Fatal编程技术网

读取R中的值序列

读取R中的值序列,r,R,通过将每个文件中的数据存储为列表中的数据框,我已经阅读了一系列332个文件,如下所示 files <- list.files() data <- list() for (i in 1:332){ data[[i]] = read.csv(files[[i]]) } 文件每次迭代j=1:10时,您将data[[j]]$city分配给对象req.data。这样做时,对于步骤j=2:10,您正在用jth数据集的内容覆盖req.data的早期版本。因此,req.data在任何时候都只包

通过将每个文件中的数据存储为列表中的数据框,我已经阅读了一系列332个文件,如下所示

files <- list.files()
data <- list()
for (i in 1:332){
  data[[i]] = read.csv(files[[i]])
}

文件每次迭代
j=1:10
时,您将
data[[j]]$city
分配给对象
req.data
。这样做时,对于步骤
j=2:10
,您正在用
j
th数据集的内容覆盖
req.data
的早期版本。因此,
req.data
在任何时候都只包含一个
city
的数据,因此您得到的答案是错误的,因为您只计算了最后一个城市的平均值,而不是所有10个城市的平均值

还要注意,您可以执行
mean(req.data,na.rm=TRUE)
来删除
na
s

您可以使用
lappy()
在用户R级别执行此操作,而无需显式循环,例如,使用虚拟数据

set.seed(42)
data <- list(data.frame(city = rnorm(100)),
             data.frame(city = rnorm(100)),
             data.frame(city = rnorm(100)))

mean(unlist(lapply(data, `[`, "city")), na.rm = TRUE)
因此,在您的情况下,您需要:

mean(unlist(lapply(data[1:10], `[`, "city")), na.rm = TRUE)
如果你想写一个循环,那么也许

req.data <- vector("list", length = 3) ## allocate, adjust to length = 10
for (j in 1:3) { ## adjust to 1:10 for your data / Q
    req.data[[j]] <- data[[j]]$city    ## fill in
}
mean(unlist(req.data), na.rm = TRUE)

> mean(unlist(req.data), na.rm = TRUE)
[1] -0.02177902

req.data感谢编辑帮助了我,因为我正在寻找一个带有循环实现的解决方案。还有一个问题是,当我把它放在一个函数中,将id和城市名称作为参数传递并执行它时,我得到NA作为答案,下面是警告消息警告消息:mean.default(unlist(req.data),NA.rm=TRUE):参数不是数字或逻辑:返回NA任何可能的原因。ThnxI会为此提出一个新问题;现在还不清楚你的函数是什么样子,或者你是如何调用它的。
mean(unlist(lapply(data[1:10], `[`, "city")), na.rm = TRUE)
req.data <- vector("list", length = 3) ## allocate, adjust to length = 10
for (j in 1:3) { ## adjust to 1:10 for your data / Q
    req.data[[j]] <- data[[j]]$city    ## fill in
}
mean(unlist(req.data), na.rm = TRUE)

> mean(unlist(req.data), na.rm = TRUE)
[1] -0.02177902
vec <- numeric(length = 3)  ## allocate, adjust to length = 10
for (j in 1:3) {  ## adjust to 1:10 for your question
    vec[j] <- mean(data[[j]]$city, na.rm = TRUE)
}
mean(vec)