Добавить число к вектору внутри списка в R - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть такой список

x <- list(a=1:10, b="Good morning", c="Hi")

Если я наберу x[1] или x[c("a")], я получу числа от 1 до 10 вектора

Я хочу добавить 5 ккаждый элемент вектора находится внутри списка x.

Я пытался

x[1] + 5 #didn't work

x[c("a")] + 5 #didn't work

Я пробовал несколько других вещей, которые я нашел в Google, и они не работали

Любая помощь будет оценена.

1 Ответ

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

Несколько решений:

> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...