循环数据集R.

时间:2016-03-10 11:48:07

标签: r loops

我正在尝试创建一个循环来自动执行R中的许多操作。我的代码看起来像这样:

  datA <- droplevels(datSUM[datSUM$Conc=="a",])
  datB <- droplevels(datSUM[datSUM$Conc=="b",])
  datC <- droplevels(datSUM[datSUM$Conc=="c",]) 
  datD <- droplevels(datSUM[datSUM$Conc=="d",])
  datE <- droplevels(datSUM[datSUM$Conc=="e",])
  datX <- droplevels(datSUM[datSUM$Conc=="x",])
  datY <- droplevels(datSUM[datSUM$Conc=="y",])


  datAf <- droplevels(datA[datA$Sex=="f",])
  datAf1 <- droplevels(datAf[datAf$rep=="1",])
  datAf2 <- droplevels(datAf[datAf$rep=="2",])
  datAf3 <- droplevels(datAf[datAf$rep=="3",])

  datAm <- droplevels(datA[datA$Sex=="m",])
  datAm1 <- droplevels(datAm[datAm$rep=="1",])
  datAm2 <- droplevels(datAm[datAm$rep=="2",])
  datAm3 <- droplevels(datAm[datAm$rep=="3",])

因为我必须这样做7次,看起来为这个操作做一个循环是最好的方法。有人可以帮助我吗?我是R的新手所以请记住这一点。

1 个答案:

答案 0 :(得分:0)

好吧,我会抓住这个。

public static SqlParameter AddWithNullableValue(this SqlParameterCollection collection, string parameterName, object value)
{
     if(value == null)
        return collection.AddWithValue(parameterName, DBNull.Value);
     else
        return collection.AddWithValue(parameterName, value);
}

可能有更好的方法可以做到这一点,这可能涉及使用更多concs <- c(a='a',b='b',c='c',d='d',e='e',x='x',y='y') sex <- c(m='m',f='f') reps <- c(rep1='1',rep2='2',rep3='3') # By using m='m' we can label the objects within the list, making it # easier to navigate the final object, otherwise use: # concs <- c('a','b','c','d','e','x','y') # sex <- c('m','f') # reps <- c('1','2','3') dfs <- lapply(concs, function(x){ droplevels(datSUM[datSUM$Conc==x,])} ) sdfs <- lapply(sex, function(x){ lapply(dfs, function(y){ droplevels(y[y$Sex==x,])} )} ) rsdfs <- lapply(reps, function(x){ lapply(sdfs, function(y){ lapply(y, function(z){ droplevels(z[z$rep==x,])} )} )} ) 但我认为这应该&#34;应该&#34;诀窍。

此方法的唯一缺点是您必须使用lapplyrsdfs[[1]][[1]][[1]] e.t.c

访问某些对象

将函数应用于这些本身需要一堆rsdfs[['rep1']][['m']][['a']] s

如果有帮助,请告诉我。

这是一种方法 - 稍后我会处理更优雅的解决方案。