首页 > 解决方案 > 我如何不让 R 覆盖其他值

问题描述

这是我的功能

complete <- function(directory, id = 1:332) {
  files_list <- list.files(directory, full.names = TRUE)
  nobs <- numeric()
  for (i in id) {
    nob <- sum(complete.cases(read.csv(files_list[i])))

  }
  nobs <- c(nobs, nob)
  dat <- return(data.frame(id, nobs))
} 

complete(specdata, 1)
complete(specdata, c(2, 4, 8, 10, 12))

这返回

> complete(specdata, 1)
  id nobs
1  1  117
> complete(specdata, c(2, 4, 8, 10, 12))
  id nobs
1  2   96
2  4   96
3  8   96
4 10   96
5 12   96

虽然我得到了正确的单个值,但不同的 id 应该有不同的结束值,目前,所有值都被最终值覆盖。

如何让它不这样做?

标签: rloopsreturn

解决方案


谢谢大家,我最终找到了另一种方法。

complete <- function(directory, id = 1:332){
  files_list <- list.files(directory, full.names = T) # creates a list of files.
  dat <- data.frame() #creates an empty data frame
  nobs <- numeric()
  for (i in id) {
    dat <- read.csv(files_list[i])    
    nobs <- c(nobs, sum(complete.cases(dat)))
  }  
  return(data.frame(id, nobs))
}

推荐阅读