2017-07-12 20 views
3

請看下面的兩個代碼,myup1保留行名稱,myup2不會。使用%>篩選數據框時維護rownames%

myup1<-outdf2[outdf2$label == "Up-Regulated", ] 
myup2<-outdf2 %>%filter(label == "Up-Regulated") 

有沒有一種方法來報告rownames%>%方法?

+2

dplyr不喜歡* rownames,請參閱add_rownames()在過濾之前將rownames添加爲列。 – zx8754

回答

5

要舉一個例子來擴充我的評論,我們可以使用add_rownames,但它已被棄用,所以請改用tibble::rownames_to_column()

library(dplyr) 
library(tibble) 

df1 <- mtcars[1:5, 1:3] 
df1 
#     mpg cyl disp 
# Mazda RX4   21.0 6 160 
# Mazda RX4 Wag  21.0 6 160 
# Datsun 710  22.8 4 108 
# Hornet 4 Drive 21.4 6 258 
# Hornet Sportabout 18.7 8 3 

df1[ df1$cyl == 6, ] 
#     mpg cyl disp 
# Mazda RX4  21.0 6 160 
# Mazda RX4 Wag 21.0 6 160 
# Hornet 4 Drive 21.4 6 258 

df1 %>% 
    rownames_to_column("myCars") %>% 
    filter(cyl == 6) 
# # A tibble: 3 x 4 
#   myCars mpg cyl disp 
#   <chr> <dbl> <dbl> <dbl> 
# 1  Mazda RX4 21.0  6 160 
# 2 Mazda RX4 Wag 21.0  6 160 
# 3 Hornet 4 Drive 21.4  6 258