【发布时间】:2016-04-01 05:40:18
【问题描述】:
我的cut 函数在dplyr 之外工作得很好,但是当我将相同的cut 函数插入mutate 时,它会抛出这个错误:
错误:无效的下标类型'double'
示例代码:
df <- structure(list(fyear = c(1970, 1970, 1970, 1970, 1970, 1970,
1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970, 1970,
1970, 1970, 1970), BEME = c(0.39713747645951, 0.548988782444936,
0.537154930871343, 1.89357008340059, 1.66945262543448, 0.969181836638018,
1.09989952916609, 0.858308443214104, 0.292175536881419, 0.684685677549708,
0.338422675433708, 3.02671555788371, 0.422643864469658, 0.805317430736738,
0.529954031556715, 0.617716486520065, 0.911576593365635, 0.4131850675139,
1.16211278792693, 2.13177678851802), exchg = c(11L, 11L, 11L,
11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 11L, 11L, 12L, 11L, 12L,
19L, 11L, 11L, 11L)), .Names = c("fyear", "BEME", "exchg"), class = c("tbl_df",
"data.frame"), row.names = c(NA, -20L))
cut函数
cut(df$BEME, breaks = quantile(df[df$exchg == 11, 2]$BEME, c(0,0.3,0.7,1)), labels = FALSE)
[1] NA 2 2 3 3 2 2 2 NA 2 NA 3 1 2 1 2 2 1 2 3
dplyr
newdat <- df %>%
group_by(fyear) %>%
mutate(LMH = cut(BEME, breaks = quantile(df[df$exchg == 11, 2]$BEME, c(0,0.3,0.7,1)), labels = FALSE))
【问题讨论】: