当我尝试在tibble中的一列字符上使用滞后函数(来自dplyr库)时,我在R中收到以下错误:
mutate_impl(.data,dots)中的错误:期望单个字符串值:[type = logical;程度= 1] .
数据框中的一列字符不会发生此错误 . 我也没有在tibble或数据框中得到一列数字的错误 .
有谁知道为什么我在数据帧与反复的滞后函数中出现这种差异?谢谢!
以下是一些重现错误的示例代码 . 我有滞后工作和不工作时的例子 . 我已经尝试在我的机器上更新tidyverse和dplyr库,但我仍然遇到同样的错误 .
tib = data_frame(x = c('a','b','c'), y = 1:3)
# lagging column of characters in tibble throws error
res = tib %>%
mutate(lag_n = lag(x, n=1, default = NA))
# lagging column of numbers in tibble does NOT throw error
res = tib %>%
mutate(lag_c = lag(y, n=1, default = NA))
df = data.frame(x = c('a','b','c'), y = 1:3)
# lagging column of characters in data frame does NOT throw error
res = df %>%
mutate(lag_n = lag(x, n=1, default = NA))
# lagging column of numbers in data frame does NOT throw error
res = df %>%
mutate(lag_c = lag(y, n=1, default = NA))
1 回答
您遇到此错误是因为
dplyr
和tibble
对它们允许您使用的NA
值的类型严格(或者更具体地说,它们对检查您创建的变量的类型更严格) . 你需要NA_character_
,如下: