在R中输出多个数据数组

时间:2013-12-19 12:02:20

标签: arrays r dataframe

我有一个循环遍历多个主题的代码,并在各种数组中输出连续1的运行长度。输出是这样的:

Variable1RunLengths 2 3 14 12 7 8

Variable2RunLengths 4 9 8 12 4 7 3

它适用于多个科目。我知道如何将单个变量输出到数据框,但是我无法输出我正在使用此代码计算的数据数组。有什么建议吗?

GetRL<-function(df) {

 subjects <- unique(df.all$Subject)
 numsubjects <- length(subjects)
 runLengths.df <- data.frame()

 for (i in 1:numsubjects) {

     subj <- subjects[i]##names loop variable 
     subdf <- df.all[which(df.all$Subject == subj),] ##pulls all data for current subject
     ## pulls vectors within current subject for each task
     patrmdf <- subdf$Patient_Room
     compdf <- subdf$comp
     pertoperdf <- subdf$pertoper
     paperdf <- subdf$paper

     ##calculates runs of ones for each task, pulls lengths or all values = 1
     patrmall <- rle(patrmdf)
     patrmruns <- patrmall$lengths[patrmall$values == 1]
     patrmslength <- length(patrmruns)
     compall <- rle(compdf)
     compruns <- compall$lengths[compall$values == 1]
     complength <- length(compruns)
     pertoperall <- rle(pertoperdf)
     pertoperruns <- pertoperall$lengths[pertoperall$values == 1]
     pertoperlength <- length(pertoperruns)
     paperall <- rle(paperdf)
     paperruns <- paperall$lengths[paperall$values == 1]
     paperlength <- length(paperruns)


     ##outputs vectors and variables
     runLengths.df <- subj
     runLengths.df<- patrmruns
     runLengths.df<- compruns
     runLengths.df<- pertoperruns
     runLengths.df <- paperruns
 }
 return(runLengths.df)

}

1 个答案:

答案 0 :(得分:1)

数据框架的数据结构选择较差,因为您可以使用不同大小的数组。我会尝试列表清单。在循环之外,您将初始化

runLengths<-list()

然后在循环的底部,你会做

runLengths$subj<-list(patrm=patrmruns,
  comp=compruns,
  pertoper=pertoperruns,
  paper=paperruns)

然后,例如,为了恢复主题comp的{​​{1}}游程长度,你会写

XYZ