Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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
使用for循环创建r数据帧_R_For Loop_Dataframe - Fatal编程技术网

使用for循环创建r数据帧

使用for循环创建r数据帧,r,for-loop,dataframe,R,For Loop,Dataframe,我是编程新手。我正在解决一个问题,我需要使用一个函数创建一个数据框,该函数接受一个文件目录和文件名,并创建一个带有文件id的数据框,以及每个文件的案例摘要 当我使用以下参数运行程序时,数据帧构建正确: function("directory", 1:5) # or any vector that starts with 1 id nobs 1 1 117 2 2 1041 3 3 243 4 4 474 5 5 402 但是,当参数为 function("direct

我是编程新手。我正在解决一个问题,我需要使用一个函数创建一个数据框,该函数接受一个文件目录和文件名,并创建一个带有文件id的数据框,以及每个文件的案例摘要

当我使用以下参数运行程序时,数据帧构建正确:

function("directory", 1:5)  # or any vector that starts with 1

  id nobs
1  1  117
2  2 1041
3  3  243
4  4  474
5  5  402
但是,当参数为

function("directory", 5) 
我在两者之间添加了NAs

  id nobs
1  1    1
2 NA   NA
3 NA   NA
4 NA   NA
5  5  402
这里的预期结果应该是

 id nobs
1  5  402

这是我的密码。。任何帮助或指导都将不胜感激

complete <- function(directory, id = 1:332) {

    slash <- "/"
    fileext <- ".csv"

    id <- numeric()

    nobs <- numeric()

    for(i in id) {     
            fileid <- as.numeric(i)
            file <- sprintf("%03.f", fileid)
            filename <- paste(directory, slash, file, fileext, sep = "")
            datafile <- read.csv(filename) #read file
            cases <- sum(complete.cases(datafile))


            id[i] <- i
            nobs[i] <- cases     



    fd <- data.frame(id, nobs, stringsAsFactors = FALSE) 
    fd

}
我的直觉是,当id[i]时,这应该起作用

 id <- append(id,i)

我还想知道你的代码是否有效,因为id变量是从矢量重新分配到数值对象的。

这显然是从彭科瑟拉的家庭作业中得到的。您不应该在for循环中修改索引。你应该使用为学生建立的课程网站寻求帮助。它是。我先尝试了这条路线,但没有找到解决问题的方法。感谢您提供有关索引的提示。这有助于我理解它们是如何工作的。我做了你建议的更改,现在它就像一个符咒一样工作!我很高兴能带自己出去喝杯啤酒:-。非常感谢!!
 id <- append(id,i)