在R中选择多个DF中的多个行

时间:2015-10-16 14:25:46

标签: r

我已经在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)),]))
  }

1 个答案:

答案 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)