【发布时间】:2018-06-27 01:47:25
【问题描述】:
我想创建一个包含 plotmath 表达式的新列,我稍后计划在分析管道的其他地方使用它。
这是我尝试过的一个最小示例。例如,我在这里尝试创建一个名为 label 的新列,该列将根据 y 列的值具有不同的绘图表达式。
这似乎不起作用:
# loading needed libraries
library(tidyverse)
# creating a dataframe
df <- data.frame(x = c(1:10), y = c(rep("a", 5), rep("b", 5))) %>%
tibble::as_data_frame(x = .)
# adding a new column with plotmath expression
df %>%
dplyr::mutate(.data = .,
label = dplyr::case_when(
y == "a" ~ paste(list(
"'This is'", "~alpha==", 1
), sep = ""),
y == "b" ~ paste(list(
"'This is'", "~beta==", 2
), sep = "")))
#> Error in mutate_impl(.data, dots): Evaluation error: `y == "a" ~ paste(list("'This is'", "~alpha==", 1), sep = "")`, `y == "b" ~ paste(list("'This is'", "~beta==", 2), sep = "")` must be length 10 or one, not 3.
由reprex package (v0.2.0) 于 2018 年 6 月 26 日创建。
【问题讨论】:
-
您在致电
case_when时想要做什么?这对我来说并不明显。 -
@TimBiegeleisen 在这里,我正在尝试创建一个名为
label的新列,该列将根据y列的值具有不同的绘图表达式。 -
您需要为
paste()使用collapse =参数而不是sep -
当您使用
sep时,您最终会得到一个与列表长度相同的向量。使用collapse将意味着您将得到一个长度为 1 的向量 -
@alexwhan 成功了!你能发布你的答案和解释,我会接受它作为答案。谢谢!
标签: r dplyr tidyverse tibble plotmath