我有一个这样的列表
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上发现的其他一些东西,但它们没有起作用
任何帮助将不胜感激。
答案 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