使用for循环创建r数据帧

时间:2015-08-29 18:03:40

标签: 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("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

function("directory", 3:7)  # id does not start with 1

complete("specdata", 5:10)
   id nobs
1   6    6
2  NA   NA
3  NA   NA
4  NA   NA
5   5  402
6   6  228
7   7  442
8   8  192
9   9  275
10 10  148

这是我的代码..非常感谢任何帮助或指示

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] <- i时,我被分配到向量位置i。当i为!= 1时,它会使用NA填充缺失的行。我尝试了不同的东西,但无法弄清楚如何将索引设置为从位置1开始。

1 个答案:

答案 0 :(得分:0)

这应该有效

 id <- append(id,i)

此外,我想知道您的代码是否有效,因为id变量已从向量重新分配给数字对象。