如何不让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))
}