данные full_join с 0 строками - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь написать функцию, которая поддерживает объединение данных с 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 Ответ

1 голос
/ 14 марта 2019

Мы можем определить пустое 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не может содержать столбец соединения key, который отсутствует в LHS

, поскольку a<-tibble("key", "value", .rows=0) возвращает a со столбцом с именем "key", а не key, следовательно, full_join завершится ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...