r-summary_all(中位数)永不结束,没有错误.保存并重新加载数据帧解决了这个问题.为什么



我有一个脚本,它结合了来自不同.csv文件的一些数据,然后对数据进行筛选和汇总。当我获取脚本的源代码时,它将无限期地运行,不会引发错误。

我把问题缩小到summary_all(中位数(。如果我用平均值而不是中位数,它很好。如果我把summary_all这行注释掉,它也很好用。

我的印象是我的RStudio(或我的计算机(造成了这个问题,因为当我保存了包含对象df的工作区,并将其发送给同事,她在加载的工作区上运行#Finalize部分时,她没有问题。但现在我发现,如果我自己加载保存的工作区,并运行#Finalize部分,它也可以正常工作。仅保存和重新加载数据帧(不包括工作区的其余部分(也是如此

因此,我测试了一种变通方法,即脚本保存然后加载数据帧,这解决了我的问题。但对我来说,这样做似乎真的很奇怪。。

我的数据大约有37000行。如果我改为在1000行上执行该脚本,则它可以工作,而不需要解决方法。因此,理论上,代码是正确的。但如果我在所有37000行上运行它,即使等待4个小时也不会产生结果。如果我确实使用了变通方法,我可以在大约2分钟内运行所有37000行。

有人能告诉我是什么原因造成的吗?几天来,我一直在询问同事并在网上搜索,但我就是想不通。

# Initiate----------------------------------------------------------------
library(tidyverse)
info <- read_tsv("./Probe Annotation.txt")
# Read data---------------------------------------------------------------
d1 <- read_tsv("./Summary.txt") %>% 
select(-ProbeName, -ControlType)
d1_dict <- read_tsv("./DataPrint Run Summary.txt", skip=10)
d1_colnames <- colnames(d1)
d1_prep <-
d1 %>% 
rename_at(all_of(d1_colnames), ~ d1_dict$CaseNo)
# Gather ------------------------------------------------------------------
df <- bind_cols(info, d1_prep)
df <- df[1:1000,]
# Workaround--------------------------------------------------------------
# save(df,file="df.RData")
# load("df.RData")
# Finalize ----------------------------------------------------------------
df_final <-
df %>% 
filter(!is.na(Sequence)) %>%
select(-ProbeName, -GeneName, -SystematicName) %>%
group_by(Sequence)%>%
summarise_all(median)

我试着根据这里的答案使用(统计数据:中位数(而不是(中位数(,没有区别。

df_final <-之前添加:setDT(df)

最新更新