リスト内のネストのレベルを判断する簡単な方法(つまり、関数)はありますか? この情報を取得するために使用できるstr
があることは知っています。しかし、単に結果を返すものがありますか?そして、そのような関数を使用して、すべてのレベルのalist(再帰的に)の名前を取得できますか?Rの入れ子のレベルを決めますか?
8
A
答えて
10
少し再帰関数はあなたのためにこれを行うことができます。
depth <- function(this,thisdepth=0){
if(!is.list(this)){
return(thisdepth)
}else{
return(max(unlist(lapply(this,depth,thisdepth=thisdepth+1))))
}
}
あなたがしている場合ロウを使用するための
l1=list(1,2,3)
l2=list(1,2,l1,4)
l3=list(1,l1,l2,5)
require(testthat)
expect_equal(depth(l1),1)
expect_equal(depth(l2),2)
expect_equal(depth(l3),3)
謝罪:package:testthat
だ、ここではテストセットです変数名にr-case L可読性は失敗する。
2
すべての要素に名前が付いている場合は、あなたが(unlist
のコードから)これを使用することができます:
mylist <- list(a=list(x=1),b=list(c=list(y=c(2,3)),d=c("a","b")))
names(.Internal(unlist(mylist, TRUE, TRUE)))
#[1] "a.x" "b.c.y1" "b.c.y2" "b.d1" "b.d2"
0
purrr
パッケージのを使用できるようになりました。
注:は現在機能がpurrr
の開発版の一部ですが、パッケージはバージョンがあなたがS < `試みることができる
関連する問題
- 1. JPAの複数レベルの入れ子コンポーネント
- 2. R因子レベルを減らす
- 3. R:因子レベル、recode rest to 'other'
- 4. Rデータフレームのレベル
- 5. 2つのレベルの因子をグループ化するR
- 6. プロセスの特権レベルを決めるのは何ですか?
- 7. アンドロイド:3レベルまで入れ子にされたビュー
- 8. Rの因子変数からレベルの順序を削除するには?
- 9. 列番号-Rの因子の抽出レベル
- 10. Rの日付を任意の精度のレベルに丸める
- 11. 一般的な配列を更新するためにRのforeachループを入れ子にしました
- 12. Rデータフレーム内の複数の変数に同じ因子レベルを適用する
- 13. アプリケーションのデプロイ時のエラー:入れ子の例外解決
- 14. 検索された要素のレベルを決定する
- 15. ゴースト因子レベル
- 16. 複数レベルの親子テーブルに効率的に挿入
- 17. NHibernateの子トランザクション分離レベル
- 18. テキスト入力の位置決め?
- 19. 振り子運動のためのODEを解決するGSL
- 20. 生のクエリを膨らませるためにRを解決できない
- 21. R線形計画問題を解決するため
- 22. R - すべての因子レベルの相互作用を保証する集合関数のようなもの
- 23. C++:技術レベル(ASM)のR値参照とは何ですか?
- 24. 入れ子の@Transactional
- 25. 入れ子のBeginCollectionItem
- 26. 入れ子のテンプレートクラス
- 27. 複数のレベルの子クラスを実装しています
- 28. 列挙型の入れ子ですか?
- 29. 入れ子のセレクタ - 可能ですか?
- 30. 解決策レベルでの警告を抑制します。警告を解決レベルのエラーとして扱います
バンプなったら公式CRANバージョンの一部になるだろう - (capture.output( str(mylist、nest.lev = 1))[ - 1]) 'を実行し、' s'の各要素を開始する '..'の数を取得するために文字列処理を使用します。 (10分後にそれ以上の答えが得られない場合は、自分自身でそのショットを与えます) –