交互式与自动化运行同一R脚本结果不一致问题排查
问题:交互式会话与自动化运行R脚本时卡方检验p值不一致
我有一个处理单细胞cds对象、为每个细胞分配hash barcodes的R脚本,该脚本输出p值,但同一脚本在交互式会话与自动化运行时得到的p值不同——自动化运行时p值趋近于1。我读取两种模式下的p值并绘制了-log10(p值)直方图进行对比。
以下是导致结果不一致的核心脚本片段:
chisq_vs_background <- function(test_hash_matrix, hash_frequencies) { hash_frequencies_nz <- which(hash_frequencies > 0) hash_frequencies <- hash_frequencies[hash_frequencies_nz] pvals <- pbapply(test_hash_matrix[, hash_frequencies_nz], 1, function(x) { tryCatch({ res <- chisq.test(x, p=hash_frequencies, simulate.p.value=FALSE) unlist(res[["p.value"]]) }, error=function(e) { # 返回1.0 print("error") }) }) return(pvals) }
我已尝试的排查步骤:
- 交互式运行时清空工作区,未解决问题
- 对比两种模式下的
sessionInfo(),包版本无差异 - 设置随机种子,未能解决问题
请问R在交互式会话与脚本调用时,对输入文件或脚本的解读是否存在差异?
内容的提问来源于stack exchange,提问作者athuyvo
相关产品推荐
相关产品推荐

