Несколько решений:
> x <- list(a=1:10, b="Good morning", c="Hi")
> x[["a"]] + 5
[1] 6 7 8 9 10 11 12 13 14 15
> x[[1]] + 5
[1] 6 7 8 9 10 11 12 13 14 15
> x$a + 5
[1] 6 7 8 9 10 11 12 13 14 15
Проблема вашего подхода в том, что []
- это синтаксис для индексирования векторов, а x
- это список, а не вектор.Чтобы получить элемент списка, вам нужно использовать [[]]
.Используя x[1]
, вы получаете подсписок, чей единственный элемент является вектором, а не вектором.
Добавление в ответ на комментарий, спрашивающий, как обновить исходный список:
В R вы можете использовать один и тот же синтаксис для извлечения значений и объекта и для присвоения значений этому объекту.
> x<span class="math-container">$a <- x$</span>a + 5
> x
$a
[1] 6 7 8 9 10 11 12 13 14 15
$b
[1] "Good morning"
$c
[1] "Hi"
Любая комбинация различных возможных синтаксисов также работала бы:
x[["a"]] <- x[[1]] + 5