繁体   English   中英

我如何不让 R 覆盖其他值

[英]How do I not have R overwrite the other values

这是我的功能

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 应该有不同的结束值,目前,所有值都被最终值覆盖。

如何让它不这样做?

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

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))
}

@StupidWolf 的建议应该可以解决您的问题,但这是另一种方法:

complete <- function(directory, id = 1:332) {
   files_list <- list.files(directory, full.names = TRUE)[id]
   data.frame(id, nobs = sapply(files_list, function(x) nrow(na.omit(read.csv(x)))))
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM