我是编程新手。我正在研究一个问题,我需要使用一个函数创建一个数据框,该函数接受文件目录和文件名,并创建一个带有文件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开始。
答案 0 :(得分:0)
这应该有效
id <- append(id,i)
此外,我想知道您的代码是否有效,因为id
变量已从向量重新分配给数字对象。