当我在列表中放置一个值时,以一种相同的形式检索值的一致方法是什么?
list1 <- list('a'=1, 'b'=2)
list2 <- list('a'=11, 'b'=22, 'c'=33)
listOfLists <- list()
listOfLists <- c(listOfLists, list('first' = list1))
listOfLists <- c(listOfLists, list('second' = list2))
list1['a'] + 5 # should be 6
listOfLists['second']['a'] # should be 11
我假设我必须在某个函数f
中包含最后两个调用。像f(f(listOfLists['second'])['a'])
一样。 f
需要做什么?
注意:在实际代码中,我是以编程方式添加项目,因此我希望将名称保留为字符串以保持示例适用。
编辑:正如Gavin所说,解决方案是使用双括号list1 ['a'] + 5.
答案 0 :(得分:2)
时
list1[['a']] + 5
> list1[['a']] + 5
[1] 6
和
listOfLists[['second']][['a']]
> listOfLists[['second']][['a']]
[1] 11
你在找什么?
即。 [[
不是[
。后者([
)返回包含所选组件的列表,而[[
返回所选组件内的内容 - 即实际组件。