将数字添加到R中列表中的向量

时间:2019-02-24 09:57:16

标签: r

我有一个这样的列表

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

如果我输入x[1]x[c("a")],我会得到向量的1到10的数字

我想在列表x内的向量a的每个元素上加上5。

我尝试过

x[1] + 5 #didn't work

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

我尝试了在Google上发现的其他一些东西,但它们没有起作用

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

一些解决方案:

> 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$a <- x$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