Как я могу увидеть содержимое определенной ячейки в таблице? - PullRequest
0 голосов
/ 23 февраля 2019

Я попытался df["row_name", 2], чтобы получить ячейку, которая находится в строке "row_name" и во втором столбце, но есть ошибка

Ошибка: невозможно подмножество с [, используяобъект функции класса.

1 Ответ

0 голосов
/ 23 февраля 2019

При использовании тибла, '[' возвращает другой тиббл.Для подмножества попробуйте '[[' или '$':

df2 <- tibble(x = 1:3, y = 3:1)
class(df2$x)
#> [1] "integer"

Например:

my.tibble<-tibble(x=c('Jack','Jill','Bill'),
              y=c('Fell','Stood','Slipped')
              )
> my.tibble
# A tibble: 3 x 2
  x     y      
  <chr> <chr>  
1 Jack  Fell   
2 Jill  Stood  
3 Bill  Slipped
> my.tibble[2,2]
# A tibble: 1 x 1
  y    
  <chr>
1 Stood

Аналогично ...

> my.tibble$x[2]
[1] "Jill"

или

my.df<-tibble('row_name' = c('Row A','Row B','Row C'),
              'other_rows' = c('Row 1A', 'Row1B', 'Row1C'))

> my.df$row_name[2]
[1] "Row B"

См. https://cran.r -project.org / web / packages / tibble / vignettes / tibble.html

============= Обновлено [на основе разъяснения запроса ===========

Из документации [здесь] (https://www.rdocumentation.org/packages/tibble/versions/1.4.2/topics/rownames), 'удаляются при поднаборе с [ operator '.

Однако, давайте посмотрим, приведет ли это вас туда, куда вы хотите.

Создайте фиктивные данные из iris data:

> df_1<-iris[1:10,]

Добавить строку.Имена:

> row.names(df_1)<-c('Obs1','Obs2','Obs3','Obs4','Obs5','Obs6','Obs7','Obs8','Obs9','Obs10')

Преобразование в таблицу:

library(tibble) 
> df_1 <- as_tibble(rownames_to_column(df_1))

> head(df_1)
# A tibble: 6 x 6
  rowname Sepal.Length Sepal.Width Petal.Length Petal.Width Species
  <chr>          <dbl>       <dbl>        <dbl>       <dbl> <fct>  
1 Obs1             5.1         3.5          1.4         0.2 setosa 
2 Obs2             4.9         3            1.4         0.2 setosa 
3 Obs3             4.7         3.2          1.3         0.2 setosa 
4 Obs4             4.6         3.1          1.5         0.2 setosa 
5 Obs5             5           3.6          1.4         0.2 setosa 
6 Obs6             5.4         3.9          1.7         0.4 setosa 

Использование dplyr для фильтрации:

библиотека (dplyr)

> filter(df_1,rowname=="Obs1" & Petal.Length == 1.4)
# A tibble: 1 x 6
  rowname Sepal.Length Sepal.Width Petal.Length Petal.Width Species
  <chr>          <dbl>       <dbl>        <dbl>       <dbl> <fct>  
1 Obs1             5.1         3.5          1.4         0.2 setosa 

Другой вариант. Вы можете объединить filter и select. В этом примере я говорю R сначала отфильтровать по имени строки 'Obs1', а затем выбрать столбец 'Petal.Length', который возвращает единственное значение (1.4)

> filter(df_1,rowname=="Obs1") %>%
+   select(Petal.Length)
# A tibble: 1 x 1
  Petal.Length
         <dbl>
1          1.4
...