私の質問はこれが可能かどうかです。与えられたリストbase :: ::()内の名前のないリスト要素へのアクセス
lst <- list(a = 1, 2)
with(lst, a)
は最初の要素を返すことができます。しかし、最初に名前を付けずにwith
を使用して2番目の要素を返すことはできますか?
は動作しません:
with(lst, [[2]])
with(lst, `2`)
with(lst, ..2)
私はwith(lst, ls(all.names = TRUE))
がちょうど"a"
を与えるので、これが不可能であると思われます。しかし誰もが異なって知っていますか?
私はなぜwith(lst, 2)
がうまくいかないかを知ります。もちろん、[[
は関数なので、私の最初の試みはRを混乱させることは明らかです。しかし、with
は名前のない引数に特別な名前を付けて、別々にリストに再アクセスせずにアクセスできるようになります。たとえば、with
によって設定された環境では、2番目の要素は..2
と呼びます。しかし、そうではありません。
この例では、単純にlst[[2]]
を使用します。しかし、私は、いくつかの要素が命名され、他の要素が命名されていない、大規模な複数レベルのリストの複雑な表現に関して考えています。便利なレベルのサブセットから開始するには、with
ステートメントを使用して、コードをはるかに読みやすくすることができます。しかし、いくつかの必要な要素を無名にすることは、このための障壁です。
この例ではまあまあです。これが役に立つときの文脈は、いくつかの名前付き要素といくつかの名前のない要素を含む複雑な式を使用して、複数レベルのリストの内部にいる場合です。考え方は、コードに必要なテキストの量を減らすことです。 – Bazz
@akrun私は、最も簡単な再現可能な例を提供しました。いつものようにコーディングでは、もっとも簡単な例で複雑なコードを扱う理由を示しませんが、より複雑なコードに適用できる原則を示しています。 – Bazz
最も簡単な問題への答えは、一般的にコードを気にして、そろばんを出すことではありません。 – Bazz