Re: [问题] 如何读入多个CSV档

楼主: clansoda (小笨)   2016-01-15 12:10:30
感谢各位的帮助,我目前资料读取没什么问题了,是后面卡关了
我写一个早上都没办法突破,我先把资料贴上来,因为用叙述的好像很难
https://goo.gl/DpkiII,这是我目前用的资料
要写出一个能够算出sulfate或nitrate的平均数的function
我目前是想说用土法炼钢的方式将资料读进来然后用dplyr的函数来筛选
我写成这样pollutanmean<-function (directory, pollutan, id=1:332 ) {
csv_file<-vector("list",length(directory))
for (i in seq_along(directory)) {
csv_file[[i]]<-read.csv(directory[[i]])
}
s<-0
do.call(rbind,csv_file)->completedata
library(dplyr)
final<-completedata %>% filter(ID==id) %>%
select("pollutan")
s+mean(final,na.rm=TRUE)->s
return(s)
我有碰到一个问题是我想用read.csv只读我想要的CSV档案就好了
但是list[[id]]这样的写法会有问题,应该是里面只能放一个数字
假设id是1:10这样的话就会有问题,然后我就想是不是可以用for (i in seq_along(id))
这样的方式去读,可是假设使用者将id填入68:70,我发现seq_along会传回1、2、3
这样的数字,所以我只好把所有CSV档案都读进来然后用昨天学到的do.call将所有
档案合并然后用filter筛选ID为使用者填入的id,接着选择sulfate或nitrate
其中一个变量然后做平均接着传回来
我得到下面的error提示
Error: All select() inputs must resolve to integer column positions.
The following do not:
* "pollutan"
In addition: Warning message:
In c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, :
longer object length is not a multiple of shorter object length
第一个我觉得是说要叫我指定变量的位置,但是我学到的select的直接放
我想要留下来的变量名称就好了,第二个我就真的看不懂他在写什么了
想请问我中间的逻辑哪边有错,不好意思一直在同一个问题打转。
作者: kpwada (征服的怒火)   2016-01-15 12:23:00
我也曾经撞墙期,不耻下问很勇敢,加油

Links booklink

Contact Us: admin [ a t ] ucptt.com