我正在尝试编写一个支持以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
而不需要一堆条件逻辑的解决方法的想法?
答案 0 :(得分:1)
我们可以使用tibble
,character()
等来定义空的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
将失败。