下面是模拟数据,它将作为upset()函数的输入
nobs <- 4000
pb <- round(runif(n=1, min=0.1, max=0.8),1)
August <- rbinom(n=nobs, size=1, prob=pb)
pb <- round(runif(n=1, min=0.1, max=0.8),1)
September <- rbinom(n=nobs, size=1, prob=pb)
pb <- round(runif(n=1, min=0.1, max=0.8),1)
October <- rbinom(n=nobs, size=1, prob=pb)
pb <- round(runif(n=1, min=0.1, max=0.8),1)
November <- rbinom(n=nobs, size=1, prob=pb)
pb <- round(runif(n=1, min=0.1, max=0.8),1)
December <- rbinom(n=nobs, size=1, prob=pb)
#generate random id
myFun <- function(n = nobs) {
a <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
paste0(a, sprintf("%04d", sample(9999, n, TRUE)), sample(LETTERS, n, TRUE))
}
AumPre <- round(runif(n=nobs, min=100000, max=250000))
AumAft <- round(runif(n=nobs, min=100000, max=250000))
AumIncrease <- as.integer(AumAft > AumPre)
ncust <- myFun()
df <- data.frame(ncust
, August
, September
, October
, November
, December
, AumPre
, AumAft
, AumIncrease)
upset(df, boxplot.summary = c("AumAft"))
调用upset()时,我不断收到以下错误。
Error in `$<-.data.frame`(`*tmp*`, "x", value = 1L) :
replacement has 1 row, data has 0
似乎其他人也遇到了类似的问题,如此处报道 https://github.com/hms-dbmi/UpSetR/issues/93
希望对此有一种解决方法。我喜欢可视化,但使用自己的数据集时无法实现。
谢谢
答案 0 :(得分:1)
我认为程序包可能会查找第一个和最后一个二进制列,并将它们之间的所有列都视为集合的一部分。重新排列列时,问题就消失了。
library(tidyverse)
df <- df %>%
select(ncust, AumPre, AumAft, August, September, October, November, December, AumIncrease)
upset(df)
upset(df, boxplot.summary = c("AumAft"))