У меня есть список, как так:Добавить значение для всех элементов в списке (R)
a = list('bla'=c(0,1,2,3))
Я хочу добавить 1 к каждому элементу так
> a['bla']
$bla
[1] 1 2 3 4
Конечно
> a['bla']+1
не работает ...
Помощь?
У меня есть список, как так:Добавить значение для всех элементов в списке (R)
a = list('bla'=c(0,1,2,3))
Я хочу добавить 1 к каждому элементу так
> a['bla']
$bla
[1] 1 2 3 4
Конечно
> a['bla']+1
не работает ...
Помощь?
Вам нужно двойные скобки:
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
Вы можете использовать знак доллара в список доступа к элементам по имени:
R> a$bla+1
[1] 1 2 3 4
Обратите внимание, что причиной, по которой вам нужны двойные скобки, является то, что при работе в списке отдельные скобки возвращают список, содержащий запрошенные элементы, тогда как двойные скобки возвращают сам элемент. Вы не можете использовать арифметические операторы в списках напрямую, поэтому, когда вы используете одиночные скобки, вы получаете список назад, и он не знает, как «добавить 1» в список. – Dason
@Dason Да, отличная точка. Я добавлю это к своему ответу. – csgillespie