Как исправить "Ошибка в` $ <-. Data.frame` (`* tmp *`, "x", value = 1L): замена имеет 1 строку, данные имеют 0 "при использовании upsetR? - PullRequest
0 голосов
/ 08 мая 2019

Ниже смоделированных данных, которые будут входом для функции 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

Надеемся обойти это.Мне нравится визуализация, но я не могу этого сделать, используя мои собственные наборы данных.

Спасибо

1 Ответ

1 голос
/ 09 мая 2019

Я думаю, что пакет может искать первый и последний двоичные столбцы и рассматривать все промежуточные столбцы как часть наборов.Когда вы переставляете свои колонки, проблема исчезает.


library(tidyverse)

df <- df %>% 
  select(ncust, AumPre, AumAft, August, September, October, November, December, AumIncrease)

upset(df)
upset(df, boxplot.summary = c("AumAft"))
...