0

リストに値を入れるとき、入れたのと同じ形式で値を取得するための一貫した方法は何ですか?

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

最後の 2 つの呼び出しを何らかの関数でラップする必要があると思いますf。のようにf(f(listOfLists['second'])['a'])。何がf必要ですか?

注: 実際のコードでは、項目をプログラムで追加しているので、サンプルを適用できるように名前を文字列として保持したいと考えています。

編集: Gavin が指摘したように、解決策は二重括弧 list1['a'] + 5 を使用することです。

4

1 に答える 1

2

list1[['a']] + 5

> list1[['a']] + 5
[1] 6

listOfLists[['second']][['a']]

> listOfLists[['second']][['a']]
[1] 11

あなたが探しているものは何ですか?

つまり[[、そうではありません[。後者の ( [) は、選択されたコンポーネントを含むリストを返し、選択[[されたコンポーネントの内部にあるもの、つまり実際のコンポーネントを返します。

于 2013-06-14T23:49:01.810 に答える