我已经在R中读取了多个问卷调查文件。现在我想基于它们创建新的DF,只在其中包含特定的行,通过循环遍历它们。循环似乎工作正常。但是,行的选择似乎不起作用。当我尝试用简单的方形布料选择时,我得到错误“维数不正确”。我尝试使用subet()
,但我似乎无法正确设置子集。
这是我到目前为止所拥有的:
for (i in 1:length(subjectlist)) {
p[i] <- paste("path",subjectlist[i],sep="")
files <- list.files(path=p,full.names = T,include.dirs = T)
assign(paste("subject_",i,sep=""),read.csv(paste("path",subjectlist[i],".csv",sep=""),header=T,stringsAsFactors = T,row.names=NULL))
assign(paste("subject_",i,"_t",sep=""),sapply(paste("subject_",i,sep=""),[c((3:22),(44:63),(93:112),(140:159),(180:199),(227:246)),]))
}
答案 0 :(得分:0)
这里有一些代码试图抽象出细节并做你想要做的事情。如果您只想读取一堆文件然后选择某些行,我认为您可以避免使用assign
函数,只需使用sapply
将所有数据帧读入列表即可。如果这有帮助,请告诉我:
# Get the names of files we want to read in
files = list.files([arguments])
df.list = sapply(files, function(file) {
# Read in a csv file from the files vector
df = read.csv(file, header=TRUE, stringsAsFactors=FALSE)
# Add a column telling us the name of the csv file that the data came from
df$SourceFile = file
# Select only the rows we want
df = df[c(3:22,44:63,93:112,140:159,180:199,227:246), ]
}, simplify=FALSE)
如果您现在想要将所有数据框合并到一个数据框中,您可以执行以下操作(SourceFile
列告诉您每行最初来自哪个文件):
# Combine all the files into a single data frame
allDFs = do.call(rbind, df.list)