Вы хотите:
> nerv[5,2]
[1] 5
Общий шаблон [r, c]
, где r
индексирует строки, а c
индексирует столбцы / переменные, которые вы хотите извлечь.Один или оба из них могут отсутствовать, и в этом случае это означает, что нужно указать все строки / столбцы, которые не имеют индексов.Например,
> nerv[, 2] ## all rows, variable 2
[1] 1 2 3 4 5 6 7 8 9 10
> nerv[2, ] ## row 2, all variables
c.letters.1.10.. c.1.10.
2 b 2
Обратите внимание, что для первого из них R отбросил пустое измерение, что привело к вектору.Чтобы подавить это поведение, добавьте drop = FALSE
к вызову:
> nerv[, 2, drop = FALSE] ## all rows, variable 2
c.1.10.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
Мы также можем использовать нотацию в виде списка при извлечении компонентов фрейма данных.[
извлечет компонент (столбец) как фрейм данных из одного столбца, тогда как [[
извлечет то же самое, но отбросит измерения.Это поведение происходит от обычного поведения в списке, где [
возвращает список, тогда как [[
возвращает элемент внутри индексированного компонента.Некоторые примеры могут помочь:
> nerv[2]
c.1.10.
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
> nerv[[2]]
[1] 1 2 3 4 5 6 7 8 9 10
> nerv[[1:2]]
[1] 2
Это также объясняет, почему nerv[2][5]
не удалось для вас.nerv[2]
возвращает фрейм данных с одним столбцом, который вы затем пытаетесь извлечь из столбца 5.
Подробная информация об этом включена в файл справки ?Extract.data.frame
или ?`[[.data.frame`