使用for循环追加到数据框中

时间:2017-01-05 11:14:25

标签: r dataframe data-science

我想读取一些文件,然后从读取的那些中删除NA值,然后给出删除NAs后留下的观察数量 我写过这个剧本但结果却是如此奇怪

 complete <- function(directory, id){
    fileList <- list.files(directory, full.names = TRUE)[id]
    datafamelist <- data.frame(id = numeric(), nobs = numeric())
    for(Rfile in fileList){
        cleandata <- na.omit(read.csv(file = Rfile))
        datafamelist <- rbind(datafamelist, c(cleandata$ID, nrow(cleandata)))
    }
    datafamelist
 }

结果是这样的:

  

完成(“〜/ Desktop / DataSets / specdata”,1:5)

  X1L X1L.1 X1L.2 X1L.3 X1L.4 X1L.5 X1L.6 X1L.7 X1L.8 X1L.9 X1L.10 X1L.11 X1L.12 X1L.13 X1L.14 X1L.15 X1L.16 X1L.17 X1L.18 X1L.19
1   1     1     1     1     1     1     1     1     1     1      1      1      1      1      1      1      1      1      1      1
2   2     2     2     2     2     2     2     2     2     2      2      2      2      2      2      2      2      2      2      2
3   3     3     3     3     3     3     3     3     3     3      3      3      3      3      3      3      3      3      3      3
4   4     4     4     4     4     4     4     4     4     4      4      4      4      4      4      4      4      4      4      4
5   5     5     5     5     5     5     5     5     5     5      5      5      5      5      5      5      5      5      5      5
  X1L.20 X1L.21 X1L.22 X1L.23 X1L.24 X1L.25 X1L.26 X1L.27 X1L.28 X1L.29 X1L.30 X1L.31 X1L.32 X1L.33 X1L.34 X1L.35 X1L.36 X1L.37
1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1
2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2
3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3
4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4
5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5
  X1L.38 X1L.39 X1L.40 X1L.41 X1L.42 X1L.43 X1L.44 X1L.45 X1L.46 X1L.47 X1L.48 X1L.49 X1L.50 X1L.51 X1L.52 X1L.53 X1L.54 X1L.55
1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1
2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2
3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3
4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4
5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5
  X1L.56 X1L.57 X1L.58 X1L.59 X1L.60 X1L.61 X1L.62 X1L.63 X1L.64 X1L.65 X1L.66 X1L.67 X1L.68 X1L.69 X1L.70 X1L.71 X1L.72 X1L.73
1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1
2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2
3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3
4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4
5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5
  X1L.74 X1L.75 X1L.76 X1L.77 X1L.78 X1L.79 X1L.80 X1L.81 X1L.82 X1L.83 X1L.84 X1L.85 X1L.86 X1L.87 X1L.88 X1L.89 X1L.90 X1L.91
1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1      1
2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2      2
3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3      3
4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4      4
5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5      5
  X1L.92 X1L.93 X1L.94 X1L.95 X1L.96 X1L.97 X1L.98 X1L.99 X1L.100 X1L.101 X1L.102 X1L.103 X1L.104 X1L.105 X1L.106 X1L.107 X1L.108
1      1      1      1      1      1      1      1      1       1       1       1       1       1       1       1       1       1
2      2      2      2      2      2      2      2      2       2       2       2       2       2       2       2       2       2
3      3      3      3      3      3      3      3      3       3       3       3       3       3       3       3       3       3
4      4      4      4      4      4      4      4      4       4       4       4       4       4       4       4       4       4
5      5      5      5      5      5      5      5      5       5       5       5       5       5       5       5       5       5
  X1L.109 X1L.110 X1L.111 X1L.112 X1L.113 X1L.114 X1L.115 X1L.116 X117L
1       1       1       1       1       1       1       1       1   117
2       2       2       2       2       2       2       2       2     2
3       3       3       3       3       3       3       3       3     3
4       4       4       4       4       4       4       4       4     4
5       5       5       5       5       5       5       5       5     5

而不是像这样:

##   id nobs
## 1  1  117
## 2  2  000
## 3  3  000
## 4  4  000
## 5  5  000

其中000是应该存在的观察值的数量

1 个答案:

答案 0 :(得分:0)

尝试阅读并构建您的数据框

setwd("<Your Directory>") 
file_list <- list.files()

for (file in file_list){

  # if the merged dataset doesn't exist, create it
  if (!exists("rawdata")){
    rawdata <- read.csv(file)
  }

  # if the merged dataset does exist, append to it
  if (exists("rawdata")){
    temp_dataset <- read.csv(file)
    rawdata<-rbind(rawdata, temp_dataset)
    rm(temp_dataset)
  }

}

对于NA,您可以检查哪个列包含NA并按照

工作

要检查NA,请使用summary