使用for循环创建r数据帧
我是编程新手。我正在解决一个问题,我需要使用一个函数创建一个数据框,该函数接受一个文件目录和文件名,并创建一个带有文件id的数据框,以及每个文件的案例摘要 当我使用以下参数运行程序时,数据帧构建正确:使用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
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)