Improve unnest()
performance
#1141
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Part of #1127
Closes #1112
This removes the
as_df()
andas_empty_df()
helpers fromunnest()
. Their main purpose seemed to be ensuring that each element of the list-col was a data frame, so thatunchop()
would return a packed df-col thatunpack()
would unpack. This doesn't seem to be necessary. Instead, we just letunchop()
unchop the list-cols (it "skips" over any non-list-cols) and then we tellunpack()
the remaining df-cols to unpack.As mentioned in #1126 (comment), there are a few edge cases that this would break. But they seemed to be off-label usage, only worked by accident, and
unnest_legacy()
didn't work that way either, so I think we are okay. I'll run revdeps to be sure. I've also added a test of the new error behavior.Here is an example of unnesting a list column of integers (which is really just unchop):
Here is an example of unnesting a list column of 2 column tibbles (i.e. standard unnest usage):