New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add_row chokes with grouped .data #179

Closed
dhicks opened this Issue Oct 11, 2016 · 3 comments

Comments

Projects
None yet
3 participants
@dhicks

dhicks commented Oct 11, 2016

MWE:

a = c(rep('z', 5), rep('y', 5))
tbl = tibble(a, b = 1:10)
a_prime = rep('x', 5)
add_row(tbl, a = a_prime)

This works fine.

add_row(group_by(tbl, a), a = a_prime)

This throws an error Error: is.data.frame(df) is not TRUE. It looks like, when the grouped dataframe is sent to rbind, rbind returns a matrix of dataframes. remove_rownames then (quite reasonably) doesn't know what to do with this mess a few lines later.

@jennybc

This comment has been minimized.

Member

jennybc commented Oct 11, 2016

Aside from the fact that add_row() is not (yet) prepared to operate on an object of class grouped_df, it's not clear what the correct result would be.

What should the status of the new row(s) be w/r/t the groups?

@krlmlr

This comment has been minimized.

Member

krlmlr commented Oct 12, 2016

I agree that the error message could be clearer, but I'd rather not support adding rows to a grouped df.

@dhicks

This comment has been minimized.

dhicks commented Oct 12, 2016

In my actual use case, it was simple enough to ungroup(), add_row(), and then re-group_by(). So a more perspicuous error message would have worked fine for me.

@krlmlr krlmlr added this to the 1.3.0 milestone Jan 4, 2017

@krlmlr krlmlr closed this in b32c2b9 Jan 7, 2017

krlmlr added a commit that referenced this issue Jan 9, 2017

Merge tag 'v1.2-15'
- Test R 3.1.3 and later in AppVeyor, using `Depends: R (>= 3.1.0)` in `DESCRIPTION`. Support for R 3.0.0 requires a `lazyeval` update (#189).
- An attempt to partially update a missing column now throws a clearer warning (#199).
- Time series matrices (objects of class `mts` and `ts`) are now supported in `as_tibble()` (#184).
- An attempt to call `add_row()` for a grouped data frame results in a helpful error message (#179).
- The `all_equal()` function (called by `all.equal.tbl_df()`) now forwards to `dplyr` and fails with a helpful message if not installed. Data frames with list columns cannot be compared anymore, and differences in the declard class (`data.frame` vs. `tbl_df`) are ignored. This ensures consistent behavior of this function, regardless if `dplyr` is loaded or not (#198).
- Backtick `NA` names in printing (#206, #207, @jennybc).

krlmlr added a commit that referenced this issue Apr 1, 2017

Merge tag 'v1.3.0'
Bug fixes
=========

- Time series matrices (objects of class `mts` and `ts`) are now supported in `as_tibble()` (#184).
- The `all_equal()` function (called by `all.equal.tbl_df()`) now forwards to `dplyr` and fails with a helpful message if not installed. Data frames with list columns cannot be compared anymore, and differences in the declared class (`data.frame` vs. `tbl_df`) are ignored. The `all.equal.tbl_df()` method gives a warning and forwards to `NextMethod()` if `dplyr` is not installed; call `all.equal(as.data.frame(...), ...)` to avoid the warning. This ensures consistent behavior of this function, regardless if `dplyr` is loaded or not (#198).

Interface changes
=================

- Now requiring R 3.1.0 instead of R 3.1.3 (#189).
- Add `as.tibble()` as an alias to `as_tibble()` (#160, @LaDilettante).
- New `frame_matrix()`, similar to `frame_data()` but for matrices (#140, #168, @LaDilettante).
- New `deframe()` as reverse operation to `enframe()` (#146, #214).
- Removed unused dependency on `assertthat`.

Features
========

General
-------

- Keep column classes when adding row to empty tibble (#171, #177, @LaDilettante).
- Singular and plural variants for error messages that mention a list of objects (#116, #138, @LaDilettante).
- `add_column()` can add columns of length 1 (#162, #164, @LaDilettante).

Input validation
----------------

- An attempt to read or update a missing column now throws a clearer warning (#199).
- An attempt to call `add_row()` for a grouped data frame results in a helpful error message (#179).

Printing
--------

- Render Unicode multiplication sign as `x` if it cannot be represented in the current locale (#192, @ncarchedi).
- Backtick `NA` names in printing (#206, #207, @jennybc).
- `glimpse()` now uses `type_sum()` also for S3 objects (#185, #186, @holstius).
- The `max.print` option is ignored when printing a tibble (#194, #195, @t-kalinowski).

Documentation
=============

- Fix typo in `obj_sum` documentation (#193, @etiennebr).
- Reword documentation for `tribble()` (#191, @kwstat).
- Now explicitly stating minimum Rcpp version 0.12.3.

Internal
========

- Using registration of native routines.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment