全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8321 6
2016-08-31
这个问题是在coursera中函数编写作业中遇到的,求助各位大能。

语句如下:complete<-function(directory,id=1:332)
  {
  x<-list.files(directory)

  for (i in id)
    {
     y<-read.csv(x[i])
     z<-na.omit(y)
     nobs<-nrow(z)
     complete_data<-data.frame(id,nobs)

    }
  complete_data
}


我想要达到的效果是输出的complete_data数据框能拥有每一个不同id的csv文件中完整数据的行数

形如:
       id    nobs
1     2    1041
2     4    474
3     8    192

而我所编写的代码由于for循环最后得到的z是最后一个csv文件的完整行数,我想知道如何读取每一个文件,并能够将我想要的信息持续赋值给同一向量而非擦除重写,麻烦各位指正,整个代码有什么问题也请各位指导,谢谢。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-8-31 20:34:35
1.尽量不用for循环
2.可以读取文件后保存在一个list里面,然后调用*apply函数返回结果
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-31 20:40:52
wangfs111222 发表于 2016-8-31 20:34
1.尽量不用for循环
2.可以读取文件后保存在一个list里面,然后调用*apply函数返回结果
就这个能将不同csv文件的内容累计获得到一个向量里应该如何实现?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-31 22:22:08
complete<-function(directory,id=1:332)
  {
  x<-list.files(directory)
  complete_data<-NULL
  for (i in id)
    {
     y<-read.csv(x[i])
     z<-na.omit(y)
     nobs<-nrow(z)
     complete_data<-rbind(complete_data,data.frame(id,nobs))
    }
  complete_data
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-1 15:13:23
千5320 发表于 2016-8-31 22:22
complete
谢答。如果我将id设定为c(2,4)的时候结果如下:

  id nobs
1  2 1041
2  4 1041
3  2  474
4  4  474

这是什么原因?循环的将每一个结果输出给多个id额
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-1 15:44:43
打错了,这样应该就行了
complete<-function(directory,id=1:332)
  {
  x<-list.files(directory)
  complete_data<-NULL
  for (i in id)
    {
     y<-read.csv(x[i])
     z<-na.omit(y)
     nobs<-nrow(z)
     complete_data<-rbind(complete_data,data.frame(i,nobs))
    }
  complete_data
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群