我在使用tidyr::complete()带有列名作为变量的函数时遇到问题。
内置示例按预期工作:
df <- data_frame(
group = c(1:2, 1),
item_id = c(1:2, 2),
item_name = c("a", "b", "b"),
value1 = 1:3,
value2 = 4:6
)
df %>% complete(group, nesting(item_id, item_name))
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将列名作为字符串提供时,它会产生错误。
gr="group"
id="item_id"
name="item_name"
df %>% complete_(gr, nesting_(id, name),fill = list(NA))
Run Code Online (Sandbox Code Playgroud)
我认为这是一个complete_不能与 data.frames 或像completecan 这样的列表列一起使用的错误,但这里有一个使用unite_和separate来模拟的解决方法nesting:
df %>% unite_('id_name', c(id, name)) %>% \n complete_(c(gr, 'id_name')) %>% \n separate(id_name, c(id, name))\n\n## # A tibble: 4 \xc3\x97 5\n## group item_id item_name value1 value2\n## * <dbl> <chr> <chr> <int> <int>\n## 1 1 1 a 1 4\n## 2 1 2 b 3 6\n## 3 2 1 a NA NA\n## 4 2 2 b 2 5\nRun Code Online (Sandbox Code Playgroud)\n