Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何不让R覆盖其他值_R_Loops_Return - Fatal编程技术网

如何不让R覆盖其他值

如何不让R覆盖其他值,r,loops,return,R,Loops,Return,这是我的函数 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) d

这是我的函数

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))
虽然我得到了正确的单个值, 不同的ID应有不同的结束值, 此时,所有值都被最终值覆盖


你是如何让它不这样做的?

来自@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)))))
}
完成谢谢大家,
我最终找到了另一种方法

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

complete put“nobs@StupidWolf。非常感谢。它奏效了,但与此同时,我找到了另一种解决问题的方法。这段代码是Coursera上约翰·霍普金斯R编程课程的第一个编程作业的一部分。根据Coursera荣誉代码,学生不得将完整版本的编程作业发布到互联网上,即使其中包含错误。请删除此问题以符合荣誉准则。嘿,Len,我为发布此消息深表歉意。但我目前无法删除此帖子。当试图删除这篇文章时,它的回复是:“你不能删除这个问题,因为其他人已经投入了时间和精力来回答它”,并且给出了这个链接:data.frame中的错误(id,nobs=sapply)(files_list,function(x)nrow(na.omit(read.csv(x‘);)):参数意味着不同的行数:5, 332@strki对不起,我犯了个小错误。您需要根据
id
文件列表
进行子集设置。我已经更正了答案。嘿,我投了更高的票,但我的票在这个时候不被认为是公开的moment@strki要接受一个答案,你不需要任何名声。您可以单击左侧“投票”按钮旁边的复选标记,以便将其标记为已解决。你可以阅读。
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))
}