【发布时间】:2015-08-29 18:03:40
【问题描述】:
我是编程新手。我正在解决一个问题,我需要使用一个函数创建一个数据框,该函数采用文件目录和文件名,并创建一个带有文件 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。当i 为 != 1 时,它会用 NA 填充缺失的行。我尝试了不同的方法,但不知道如何将索引设置为从位置 1 开始。
【问题讨论】:
-
这显然是来自 Peng Coursera 的作业。您不应该在 for 循环中修改索引。您应该使用为学生设置的课程网站寻求帮助。
-
是的。我首先尝试了那条路线,但无法以我接近它的方式获得解决问题的提示。感谢您提供有关索引的提示。它帮助我了解它们是如何工作的。