具有0行的full_join数据

时间:2019-03-14 17:34:56

标签: r tidyverse

我正在尝试编写一个支持以0行连接数据的函数,但出现此错误:

a<-tibble("key", "value", .rows=0)
b<-tibble(key = c("test1","test2"), value=c("result1","result2"))
full_join(a, b, by="key") # Bombs

# Error: `by` can't contain join column `key` which is missing from LHS

merge(a, b, by="key") # Also bombs 

# Error in fix.by(by.x, x) : 'by' must specify a uniquely valid column

所需的输出是:

# A tibble: 2 x 3
  key   value.x value.y
  <chr> <chr>   <chr>  
1 test1 NA      result1
2 test2 NA      result2

有更好的方法吗?还是有一些使用nrows()==0而不需要一堆条件逻辑的解决方法的想法?

1 个答案:

答案 0 :(得分:1)

我们可以使用tibblecharacter()等来定义空的integer() ...

library(tibble)
a<-tibble(key=character(), value=character())
b<-tibble(key=c("test1","test2"), value=c("result1","result2"))

full_join(a, b, by='key') 

我们收到此错误

  

错误:by不能包含LHS缺少的连接列key

因为a<-tibble("key", "value", .rows=0)返回a且列名为"key"而不是key,所以full_join将失败。