【发布时间】:2019-05-12 10:35:38
【问题描述】:
当我运行下面的代码时,我得到了这个错误:
mutate_impl(.data, dots) 中的错误:列
den的长度必须为 2 (组大小)或一个,而不是 20000
这是我的示例数据和代码:
mydata<-structure(list(condition = c("A", "B", "C", "D", "E", "A", "B",
"C", "D", "E"), r_condition = c(-0.753941712419928, 0.18796391661835,
1.07774993391177, 0.141452804751733, -1.67697957194689, -0.730021740287756,
0.30088191760836, 0.820982130392851, 0.20992883143208, -1.75797911497123
), den_a = c(-1106.36423037457, -1106.36423037457, -1106.36423037457,
-1106.36423037457, -1106.36423037457, -1106.36423037457, -1106.36423037457,
-1106.36423037457, -1106.36423037457, -1106.36423037457), den_b = c(1013.85560135413,
1013.85560135413, 1013.85560135413, 1013.85560135413, 1013.85560135413,
1013.85560135413, 1013.85560135413, 1013.85560135413, 1013.85560135413,
1013.85560135413), den_c = c(4340.91752722743, 4340.91752722743,
4340.91752722743, 4340.91752722743, 4340.91752722743, 4340.91752722743,
4340.91752722743, 4340.91752722743, 4340.91752722743, 4340.91752722743
), den_d = c(1078.95631612632, 1078.95631612632, 1078.95631612632,
1078.95631612632, 1078.95631612632, 1078.95631612632, 1078.95631612632,
1078.95631612632, 1078.95631612632, 1078.95631612632), den_e = c(-6530.58467431366,
-6530.58467431366, -6530.58467431366, -6530.58467431366, -6530.58467431366,
-6530.58467431366, -6530.58467431366, -6530.58467431366, -6530.58467431366,
-6530.58467431366)), row.names = c(NA, -10L), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), vars = "condition", drop = TRUE, indices = list(
c(0L, 5L), c(1L, 6L), c(2L, 7L), c(3L, 8L), c(4L, 9L)), group_sizes = c(2L,
2L, 2L, 2L, 2L), biggest_group_size = 2L, labels = structure(list(
condition = c("A", "B", "C", "D", "E")), row.names = c(NA,
-5L), class = "data.frame", vars = "condition", drop = TRUE))
mydata%>% mutate(den = case_when (
mydata$condition=="E" ~ mydata$den_e,
mydata$condition=="D" ~ mydata$den_d,
mydata$condition=="C" ~ mydata$den_c,
mydata$condition=="B" ~ mydata$den_b,
mydata$condition=="A" ~ mydata$den_a))
here 和 here 已经讨论了类似的问题,但这些都没有涉及 case_when。
任何帮助将不胜感激。
【问题讨论】:
-
在 dplyr 中,您不使用
mydata$condition,而只使用condition和den而不是mydata$den。这就是您的错误的来源。 -
谢谢,@phiver。但是当我不在
dplyr中使用 mydata$condition 时,我得到一个空列den。有什么解决办法吗? -
删除所有对
mydata$的引用,您的代码将运行良好。至少在给出的示例数据中 -
谢谢@phiver。让我更新这个问题。删除对
mydata$的所有引用会得到一个空列den。 -
@Krantz 我只是复制并粘贴然后从
case_when中删除了mydata的所有实例,就像@phiver 建议的那样。den列在那里并且有值。
标签: r dataframe dplyr plyr tidyverse