ハドレーバースを使ってプログラミングする方法を学ぶのに苦労しています。NSEと怠惰なビネットを読みましたが、まだ迷っています...
tidyr::complete ヘルプ ページにある例を SE ケースに翻訳しようとしています。
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))
私の最終的な目標は、次のように指定された変数で同じことを実行できるようにすることです。
v1 <- 'group'
v2 <- 'item_id, item_name'
しかし、それを試す前に、列名を直接使用して解決できるようにする必要があります。始めるには、それが私が望むものではないことを知っていても、これは少なくともエラーをスローしません:
df %>% complete_(list(~group, ~item_id, ~item_name))
私が理解できないのは、「nesting_」を含める方法
です。
df %>% complete_(~group, nesting_(~item_id, ~item_name))
# Error in nesting_(~item_id, ~item_name) : unused argument (~item_name)
df %>% complete_(~group, nesting_(list(~item_id, ~item_name)))
# Error: Each variable must be named.
# Problem variables: 1, 2
df %>% complete_(~group, nesting_(alist(~item_id, ~item_name)))
# Error: Each variable must be named.
# Problem variables: 1, 2
df %>% complete_(~group, nesting_(list('item_id' = item_id, 'item_name' = item_name)))
# Error in stopifnot(is.list(x)) : object 'item_id' not found
df %>% complete_(~group, nesting_(list('item_id' = df$item_id, 'item_name' = df$item_name)))
# No syntax error, but doesn't expand...
df %>% complete_(~group, nesting_(named_dots(item_id, item_name)))
# Error: Each variable must be a 1d atomic vector or list.
# Problem variables: 'item_id', 'item_name'
df %>% complete_(~group, nesting_(list('item_id' = item_id, 'item_name' = item_name)))
# Error in stopifnot(is.list(x)) : object 'item_id' not found
df %>% complete_(~group, nesting_(list(as.name(item_id), as.name(item_name))))
# Error in as.name(item_id) : object 'item_id' not found
df %>% complete_(~group, nesting_(as.name(item_id), as.name(item_name)))
# Error in nesting_(as.name(item_id), as.name(item_name)) :
# unused argument (as.name(item_name))
助けてくれてありがとう!!