- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to select only one column from an R data frame and return it as a data frame instead of vector?
Generally, if we extract a single column from an R data frame then it is extracted as a vector but we might want it in data frame form so that we can apply operations of a data frame on it. Therefore, we can use single square brackets for the extraction with T (TRUE) or (FALSE) values and drop = FALSE so that the output becomes a data frame.
Consider the below data frame −
Example
set.seed(999) x1<-rnorm(20,5,1) x2<-rnorm(20,5,2) x3<-rnorm(20,10,2) x4<-rnorm(20,10,1.5) x5<-rnorm(20,10,4) df1<-data.frame(x1,x2,x3,x4,x5) df1
Output
x1 x2 x3 x4 x5 1 4.718260 2.542873 9.028727 8.615033 7.428309 2 3.687440 6.286089 10.016996 11.747431 13.941194 3 5.795184 4.280474 7.435773 11.563103 5.085707 4 5.270070 5.588071 7.776842 11.655743 10.340899 5 4.722694 2.749463 10.601331 9.972138 5.183625 6 4.433976 6.284531 10.552958 8.279563 8.492609 7 3.121342 2.786525 5.898245 7.887731 15.454594 8 3.733209 3.230319 10.028380 9.576507 8.988469 9 4.032250 1.891810 11.164533 9.373345 14.025960 10 3.878991 4.746642 9.930547 11.494995 11.748597 11 6.325464 9.765328 9.766672 9.840571 16.634154 12 5.133977 6.202552 8.710036 9.895897 10.110741 13 5.938749 5.358723 13.488823 11.424552 6.085122 14 5.172538 7.161063 10.732189 9.375201 15.134917 15 5.957650 4.506376 9.866380 11.461001 5.481034 16 3.637314 0.772526 10.565225 10.093437 14.186631 17 5.068335 4.258945 11.135390 10.807633 7.688271 18 5.100658 6.045736 7.441568 6.902765 8.824823 19 5.901345 6.035611 10.870738 10.654647 9.032894 20 2.925643 2.194978 8.868998 9.759660 10.879791
Extracting column x1 −
df1[,c(T,F,F,F,F)]
[1] 4.718260 3.687440 5.795184 5.270070 4.722694 4.433976 3.121342 3.733209 [9] 4.032250 3.878991 6.325464 5.133977 5.938749 5.172538 5.957650 3.637314 [17] 5.068335 5.100658 5.901345 2.925643
is.vector(df1[,c(T,F,F,F,F)]) [1] TRUE
Extracting column x1 as a data frame −
df1[,c(T,F,F,F,F),drop=FALSE]
x1 1 4.718260 2 3.687440 3 5.795184 4 5.270070 5 4.722694 6 4.433976 7 3.121342 8 3.733209 9 4.032250 10 3.878991 11 6.325464 12 5.133977 13 5.938749 14 5.172538 15 5.957650 16 3.637314 17 5.068335 18 5.100658 19 5.901345 20 2.925643
Extracting different columns in the same way −
df1[,c(F,T,F,F,F),drop=FALSE]
x2 1 2.542873 2 6.286089 3 4.280474 4 5.588071 5 2.749463 6 6.284531 7 2.786525 8 3.230319 9 1.891810 10 4.746642 11 9.765328 12 6.202552 13 5.358723 14 7.161063 15 4.506376 16 0.772526 17 4.258945 18 6.045736 19 6.035611 20 2.194978
df1[,c(F,F,T,F,F),drop=FALSE]
x3 1 9.028727 2 10.016996 3 7.435773 4 7.776842 5 10.601331 6 10.552958 7 5.898245 8 10.028380 9 11.164533 10 9.930547 11 9.766672 12 8.710036 13 13.488823 14 10.732189 15 9.866380 16 10.565225 17 11.135390 18 7.441568 19 10.870738 20 8.868998
df1[,c(F,F,F,F,T),drop=FALSE]
x5 1 7.428309 2 13.941194 3 5.085707 4 10.340899 5 5.183625 6 8.492609 7 15.454594 8 8.988469 9 14.025960 10 11.748597 11 16.634154 12 10.110741 13 6.085122 14 15.134917 15 5.481034 16 14.186631 17 7.688271 18 8.824823 19 9.032894 20 10.879791
Advertisements