如何将数据帧指定为NULL?

时间:2015-10-27 13:06:46

标签: r

我有一个数据框mydata[[i]],其中包含数据框

示例:

  str(mydata[[1]])
  NULL
  dim(mydata[[1]])
  NULL
  str(mydata[[2]])
 'data.frame':   154 obs. of  1 variables:
  $ mod                  : num  0.0993 0.1003 0.0855 0.077 0.0954 ...
  > dim(mydata[[2]])
  [1] 154   1
  # until mydata[[125]]

正如您所看到的那样,某些内容中没有任何内容,因此它会返回NULL(mydata [[1]])但是对于mydata[[2]]

而存在其他信息

我需要的是说if sd(mydata[[i]]$mod)> 5 return mydata[[i]] as NULL

1 个答案:

答案 0 :(得分:1)

我们使用list循环lapply并使用if/else条件。

 ind <- sapply(mydata, is.null)
 ind1 <- sapply(mydata[!ind], function(x) all(is.na(x$obs)))
 mydata[!ind][!ind1] <- lapply(mydata[!ind][!ind1], 
       function(x) if((sd(x$mod)/sd(x$obs, na.rm=TRUE))>5) NULL else x)

数据

  mydata <- list(NULL, data.frame(obs=c(NA, 1:3,5), mod=c(24, 25, 39, 85, 20)),
           NULL, data.frame(obs=1:5, mod=c(24:28)), data.frame(obs=NA, mod=c(2,24)))