diff --git a/DESCRIPTION b/DESCRIPTION index e7b97223b..e03a20f64 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Version: 0.3-1 Date: 2016-03-17 Title: Simple Data Frames Description: Provides a 'tbl_df' class that offers better checking and - printing capabilities than traditional data frames. + printing capabilities than traditional data frames. Authors@R: c( person("Hadley", "Wickham", , "hadley@rstudio.com", role = "aut"), person("Romain", "Francois", , "romain@r-enthusiasts.com", role = "aut"), person("Kirill", @@ -13,12 +13,38 @@ Authors@R: c( person("Hadley", "Wickham", , "hadley@rstudio.com", role person("RStudio", role = "cph") ) URL: https://github.com/krlmlr/tibble BugReports: https://github.com/krlmlr/tibble/issues -Depends: R (>= 3.1.2) -Imports: methods, assertthat, utils, lazyeval (>= 0.1.10), Rcpp -Suggests: testthat, knitr, rmarkdown, Lahman (>= 3.0.1), magrittr, - microbenchmark +Depends: + R (>= 3.1.2) +Imports: + methods, + assertthat, + utils, + lazyeval (>= 0.1.10), + Rcpp +Suggests: + testthat, + knitr, + rmarkdown, + Lahman (>= 3.0.1), + magrittr, + microbenchmark LazyData: yes License: MIT + file LICENSE RoxygenNote: 5.0.1 LinkingTo: Rcpp VignetteBuilder: knitr +Collate: + 'RcppExports.R' + 'all-equal.r' + 'rownames.R' + 'dataframe.R' + 'frame-data.R' + 'glimpse.R' + 'repair-column-names.R' + 'src-local.r' + 'src.r' + 'tbl-df.r' + 'tibble.R' + 'type-sum.r' + 'utils-format.r' + 'utils.r' diff --git a/NAMESPACE b/NAMESPACE index 1610b25b3..9bf6556e1 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -41,9 +41,11 @@ export(data_frame_) export(dim_desc) export(frame_data) export(glimpse) +export(has_rownames) export(knit_print.trunc_mat) export(lst) export(lst_) +export(remove_rownames) export(repair_names) export(rownames_to_column) export(tbl_df) diff --git a/R/dataframe.R b/R/dataframe.R index 9326a5560..9b94c8c16 100644 --- a/R/dataframe.R +++ b/R/dataframe.R @@ -201,16 +201,14 @@ as_data_frame.NULL <- function(x, ...) { as_data_frame(list()) } -#' Conversion between rownames and a column in data frame -#' #' \code{rownames_to_column} convert row names to an explicit variable. #' -#' @param df Input data frame with rownames. #' @param var Name of variable to use #' @export #' @rdname rownames #' @importFrom stats setNames #' @examples +#' #' rownames_to_column(mtcars) #' #' mtcars_tbl <- rownames_to_column(tbl_df(mtcars)) diff --git a/R/rownames.R b/R/rownames.R new file mode 100644 index 000000000..790e6da9d --- /dev/null +++ b/R/rownames.R @@ -0,0 +1,24 @@ +#' Row names +#' +#' \code{has_rownames} checks if a data frame has row names. +#' @param df Input data frame +#' @export +#' @rdname rownames +#' @examples +#' has_rownames(mtcars) +#' has_rownames(iris) +has_rownames <- function(df) { + stopifnot(is.data.frame(df)) + .row_names_info(df) > 0L +} + +#' \code{remove_rownames} removes all row names. +#' @export +#' @rdname rownames +#' @examples +#' rownames(remove_rownames(mtcars)) +remove_rownames <- function(df) { + stopifnot(is.data.frame(df)) + attr(df, "row.names") <- .set_row_names(nrow(df)) + df +} diff --git a/man/rownames.Rd b/man/rownames.Rd index 30fbc6351..293a2a212 100644 --- a/man/rownames.Rd +++ b/man/rownames.Rd @@ -1,26 +1,40 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/dataframe.R -\name{rownames_to_column} +% Please edit documentation in R/rownames.R, R/dataframe.R +\name{has_rownames} \alias{column_to_rownames} +\alias{has_rownames} +\alias{remove_rownames} \alias{rownames_to_column} -\title{Conversion between rownames and a column in data frame} +\title{Row names} \usage{ +has_rownames(df) + +remove_rownames(df) + rownames_to_column(df, var = "rowname") column_to_rownames(df, var = "rowname") } \arguments{ -\item{df}{Input data frame with rownames.} +\item{df}{Input data frame} \item{var}{Name of variable to use} } \description{ +\code{has_rownames} checks if a data frame has row names. + +\code{remove_rownames} removes all row names. + \code{rownames_to_column} convert row names to an explicit variable. \code{column_to_rownames} convert a column variable to row names. This is an inverted operation of \code{rownames_to_column}. } \examples{ +has_rownames(mtcars) +has_rownames(iris) +rownames(remove_rownames(mtcars)) + rownames_to_column(mtcars) mtcars_tbl <- rownames_to_column(tbl_df(mtcars)) diff --git a/tests/testthat/test-rownames.R b/tests/testthat/test-rownames.R new file mode 100644 index 000000000..006c4e07a --- /dev/null +++ b/tests/testthat/test-rownames.R @@ -0,0 +1,8 @@ +context("rownames") + +test_that("has_rownames and remove_rownames", { + expect_false(has_rownames(iris)) + expect_true(has_rownames(mtcars)) + expect_false(has_rownames(remove_rownames(mtcars))) + expect_error(has_rownames(1:10)) +})