首页 > 解决方案 > 函数在 for 循环中返回 NA

问题描述

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

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)
}

显示状态但是上面函数的结果我只为第一行获取结果,如果在没有手动循环的情况下执行相同操作,我正在为 id20 中的每个元素获取结果,但是 for 循环给出除第一行之外的行的 NA 结果。如果你能帮助我,我很感激。谢谢你。

标签: rfor-loopdataframe

解决方案


我们可以用tidyverse. 按“X”分组,获取原始数据集mean的所有列summarise_allbind

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

推荐阅读