Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得tidyr';使用指定列的变量是否完成?_R_Tidyr - Fatal编程技术网

如何获得tidyr';使用指定列的变量是否完成?

如何获得tidyr';使用指定列的变量是否完成?,r,tidyr,R,Tidyr,下面是一些使用complete的代码: dat <- data.frame(a=c(1,NA), b=c(3,NA), val=c(20,30)) dat %>% complete(a, b, fill=list(val=0)) # A tibble: 4 x 3 a b val <dbl> <dbl> <dbl> 1 1 3 20 2 1 NA 0 3 NA

下面是一些使用
complete
的代码:

dat <- data.frame(a=c(1,NA), b=c(3,NA), val=c(20,30))
dat %>% complete(a, b, fill=list(val=0))

# A tibble: 4 x 3
      a     b   val
  <dbl> <dbl> <dbl>
1     1     3    20
2     1    NA     0
3    NA     3     0
4    NA    NA    30
dat完成百分比(a、b、填充=列表(val=0))
#一个tibble:4x3
阿比瓦尔
1     1     3    20
2 1 NA 0
3 NA 3 0
4 NA NA 30
我如何创建一个函数来完成这些列?以下是失败的尝试:

foo_func <- function(dat, the_cols) {
  dat %>% complete(all_of(the_cols), fill=list(val=0))
}
foo_func(dat, c('a', 'b'))

Error: Join columns must be present in data.
x Problem with `all_of(the_cols)`.
foo_func%完成(全部(列),填充=列表(val=0))
}
foo_func(dat,c('a','b'))
错误:数据中必须存在联接列。
"(所有)"的x个问题。
还有一个:

foo_func <- function(dat, the_cols) {
  dat %>% complete(!!the_cols, fill=list(val=0))
}
foo_func(dat, c('a', 'b'))

Error: Join columns must be present in data.
x Problem with `<chr>`
foo_func%完成(!!填充=列表(val=0))
}
foo_func(dat,c('a','b'))
错误:数据中必须存在联接列。
x问题``

我想要
字符向量
成为一个字符向量,因为它存在于一个以这种方式传递东西的现有代码体中。

我们可以转换为
sym
bols并使用

foo_func <- function(dat, the_cols) {
  dat %>% complete(!!! rlang::syms(the_cols), fill=list(val=0))
}
foo_func%完成(!!!rlang::syms(the_cols),fill=list(val=0))
}
-检查

foo_func(dat, c('a', 'b'))
# A tibble: 4 x 3
#      a     b   val
#  <dbl> <dbl> <dbl>
#1     1     3    20
#2     1    NA     0
#3    NA     3     0
#4    NA    NA    30
foo_func(dat,c('a','b')) #一个tibble:4x3 #阿比瓦尔 # #1 1 3 20 #2 1 NA 0 #3 NA 3 0 #4 NA NA 30
太棒了,谢谢。你已经回答了这么多这样的元编程问题,我想知道是否有一个好的资源。我不知道什么时候用!!!,我随便读了一遍。它写得很好,但我看不到这一部分的重点。@dfrankow你能检查一下它的小插曲吗。它可能有一些文章。