函数在for循环中返回NA

时间:2018-09-03 05:42:02

标签: r for-loop dataframe

你好,我有一个数据框,我想表示一些行。我正在使用

imc <- dfWoNA[1,]
imc <-head(imc,-1)

id20 <- unique_entrezgene_ids[1:20]

for (j in id20) {
  rows <- dfWoNA [which(dfWoNA$X == as.double(j)),]
  temp <- colMeans(rows[,2:285], na.rm = FALSE)
  nx <- c(j,temp)
  imc <- rbind(imc,nx)

  rm(rows)
  rm(nx)
  rm(temp)
}

显示状态,但是上面函数的结果仅在不进行for循环的情况下才执行第一行的结果,而我正在为id20中的每个元素取结果,但是for循环给出了除第一行以外的行的NA结果。如果您能帮助我,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

我们可以使用tidyverse进行此操作。按'X'分组,用原始数据集的行meansummarise_all获得所有列的bind

library(tidyverse)
dfWoNA %>%
   group_by(X) %>% 
   summarise_all(mean, na.rm = TRUE) %>% 
   bind_rows(dfWoNA, .)