使用“ for”循环创建数据框时删除重复的行

时间:2019-10-16 18:59:48

标签: r

我正在尝试查找一堆CSV文件中完整行的数量(无NA值)。但是,每次使用for循环向数据框中添加新行时,它都会输出如何在行上方创建该新行。如何阻止这种情况发生/删除重复标签?

我尝试使用removeWords和停用词。

complete <- function(directory, site.id = 1:332) {
  for (i in site.id) {
    path <- paste(getwd(), "/", directory, "/", sprintf("%03d", i), ".csv", sep = "")
    dat <- read.csv(path)
    DF <- data.frame(sum(!complete.cases(dat)), row.names = i)
    print(DF)
  }

}

我希望结果看起来像这样:

1    1344
2    2611
3    1948

但是它们不可避免地看起来像这样:

  sum..complete.cases.dat..
1                      1344
  sum..complete.cases.dat..
2                      2611
  sum..complete.cases.dat..
3                      1948

1 个答案:

答案 0 :(得分:0)

您需要在循环外初始化数据帧。通过在循环中执行此操作,您将创建一个仅在该循环迭代中存在的数据框,而不会将这些值永久存储在一起。

df <- data.frame(id = c())

然后,当您添加每个元素时,将其定向到第一列和第i行的索引。行名将自动计数。

df[i,1] <- sum(!complete.cases(dat))

因此它看起来像:

df[i,1] <- sum(!complete.cases(dat))

complete <- function(directory, site.id = 1:332) {
  for (i in site.id) {
    path <- paste(getwd(), "/", directory, "/", sprintf("%03d", i), ".csv", sep = "")
    dat <- read.csv(path)
    df[i,1] <- sum(!complete.cases(dat))
    print(DF)
  }
}