1

I have a data frame with unique row names. I want to create a subset data frame with single row based on the the row names. When I am using data[rownames(data)==name, ] I am not getting a data frame instead getting a value vector. The program is to filter data based on row names and create new data frames.

pogibas
  • 27,303
  • 19
  • 84
  • 117
Karthik
  • 35
  • 3
  • It sounds like you are on the right track, please include a [minimal reproducible](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) example for more help – Nate Sep 18 '17 at 10:31

2 Answers2

7

We need drop = FALSE as by default, the [ have drop = TRUE. So, if there is a single row, then it gets converted to lower dimension i.e. a vector.

data[rownames(data)==name, , drop = FALSE ]
akrun
  • 874,273
  • 37
  • 540
  • 662
1

You can use subset.

set.seed(4577)  # Make it reproducible

dat <- data.frame(A = sample(letters, 10), X = rnorm(10))
subset(dat, subset = rownames(dat) == 3)
#  A         X
#3 j 0.339270
Rui Barradas
  • 70,273
  • 8
  • 34
  • 66