2013-03-22 2 views

ответ

8

Вам нужно двойные скобки:

a[['bla']]+1 

Сравнить:

R> a["bla"] 
$bla 
[1] 0 1 2 3 

с

R> a[["bla"]] 
[1] 0 1 2 3 

Как Dason указывает, почему вам нужны двойные скобки, в том, что при работе на в списке отдельные скобки возвращают список, содержащий запрошенные элементы, тогда как двойные скобки возвращают e. Вы не можете использовать арифметические операторы в списках напрямую, поэтому, когда вы используете одиночные скобки, вы получаете список назад, и он не знает, как «добавить 1» в список.

Другие способы доступа к элементу списка являются:

  • индекс: a[[1]]
  • дважды: a$bla
+0

Обратите внимание, что причиной, по которой вам нужны двойные скобки, является то, что при работе в списке отдельные скобки возвращают список, содержащий запрошенные элементы, тогда как двойные скобки возвращают сам элемент. Вы не можете использовать арифметические операторы в списках напрямую, поэтому, когда вы используете одиночные скобки, вы получаете список назад, и он не знает, как «добавить 1» в список. – Dason

+0

@Dason Да, отличная точка. Я добавлю это к своему ответу. – csgillespie

2

Вы можете использовать знак доллара в список доступа к элементам по имени:

R> a$bla+1 
[1] 1 2 3 4