更改集名称标签

Changing set name labels

我看到这个问题之前已经问过好几次了,但是我找不到有效的方法。有没有聪明人能解决这个问题?

    data.frame(
    fast_car = sample(0:1, 35, replace = TRUE),
    slow_bus = sample(0:1, 35, replace = TRUE),
    fast_bus = sample(0:1, 35, replace = TRUE),
    slow_car = sample(0:1, 35, replace = TRUE)) %>% 
  upset(order.by = "freq")

这是一个非常漂亮的翻转图,但我需要去掉集合标签中的下划线。我尝试了这个 post 中建议的答案:UpsetR change set name labels in graph

fast_car <- as.list(sample(0:1, 35, replace = TRUE))
slow_bus <- as.list(sample(0:1, 35, replace = TRUE))
fast_bus <- as.list(sample(0:1, 35, replace = TRUE))
slow_car <-  as.list(sample(0:1, 35, replace = TRUE))

listinput = list(fast_bus, fast_car, slow_bus, slow_car)
names(listinput) = c("fast bus", "fast car", "slow_bus", "slow car")
upset(fromList(listinput), order.by = "freq")

然而,这会产生漂亮的标签,但图表无法正确显示。 我也尝试过使用带标签列的 tibble,但该包似乎不适用于 tibble。

有办法吗?我只会用一个词,但它确实需要 2 个词标签。

如果确实存在解决方案,将不胜感激任何帮助?

非常感谢!

通常应避免使用“non-standard”列名称,但这可能是一个例外。您可以在列名中使用空格和其他特殊字符,如果您将它们引用或用反引号括起来(并确保它们不会被自动更正)。

几个选项:

## creating the data frame with nonstandard names
data.frame(`fast car` = c(0, 1), check.names = FALSE)

## modifying names of an existing data frame
your_data %>% 
  setNames(c("fast car", "slow bus", "fast bus", "slow car") %>% 
  upset(order.by = "freq")