2

我有一个这样的列表:

a = list('bla'=c(0,1,2,3))

我想给每个元素加 1 所以

> a['bla']
$bla
[1] 1 2 3 4

当然

> a['bla']+1

不工作...

帮助?

4

2 回答 2

11

你需要双括号:

a[['bla']]+1

比较:

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

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

正如 Dason 指出的那样,您需要双括号的原因是,在对列表进行操作时,单括号会返回一个包含您要求的元素的列表,而双括号会返回元素本身。您不能直接在列表上使用算术运算符,因此当您使用单括号时,您会得到一个列表,并且它不知道如何将“1”添加到列表中。

访问列表元素的其他方法是:

  • 指数:a[[1]]
  • 双倍的:a$bla
于 2013-03-22T15:04:08.843 回答
2

您可以使用美元符号按名称访问列表元素:

R> a$bla+1
[1] 1 2 3 4
于 2013-03-22T15:04:40.777 回答