5

これは初心者の質問だと思いますが、Google 検索を効果的に行うための適切な語彙を持っていないようです。

finalのリストを含むdata.frame がありclusters、それぞれが文字列のリストです。

各クラスター内の文字列のリストを反復処理したいと思います: for ループ内の for ループ。

for (j in final$clusters){
    for (i in final$clusters$`j`){
        print final$clusters$`j`[i]
    }
}

jのリストにclusters対応iし、 の項目に対応します。clusters[j]

各クラスターの長さを使用してこれを実行しようとしましたが、これは次のようlength(final$clusters[1])になると思いましたが、リストの長さではなく1になります。

また、final$clusters[1]$'1' を指定し、次の行にクラスター 1 のすべての文字列を指定します。

ありがとう。

編集: の出力dput(str(final))、要求に応じて:

List of 2
 $ clusters     :List of 1629
  ..$ 1   :
  ..$ 2   : 
  ..$ 3   : 
  ..$ 4   : 
  ..$ 5   : 
  ..$ 6   : 
  ..$ 7   : 
  ..$ 8   : 
  ..$ 9   : 
  ..$ 10  : 
  .. [list output truncated]
 $ cluster_stats: num [1:1629, 1:6] 0.7 0.7 0.7 0.7 0.7 0.7 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:1629] "1" "2" "3" "4" ...
  .. ..$ : chr [1:6] "min" "qu1" "median" "mean" ...
NULL
4

2 に答える 2

4

listaと aを混同していると思いますdata.frame。あなたの最後のオブジェクトはリストだと思います。

リストを反復処理するには を使用できますrapply。これは、lapply の再帰バージョンです。

例えば:

## I create some reproducible example

cluster1 <- list(a='a',b='b')
cluster2 <- list(c='aaa',d='bbb')
clusters <- list(cluster1,cluster2)
final <- list(clusters)

だから使ってrapply

rapply(final,f=print)
[1] "a"
[1] "b"
[1] "aaa"
[1] "bbb"
    a     b     c     d 
  "a"   "b" "aaa" "bbb" 

OPによる編集後に更新

を使用しlapplyて、リストの名前をループします。名前ごとに、 を使用して要素リストを取得し(ファイルの名前とヘッダーを取得する場合[[は使用できます)、 を使用してファイルを書き込みます。ここでは、リスト内の要素の名前を使用してファイル名を作成します。あなたの場合、ファイル名は番号になります(1.txt、...)[write.table

    lapply(names(final$clusters),
                      function(x)
                             write.table(x=final$clusters[[x]],
                                         file=paste(x,'.txt',sep='')))
于 2013-02-09T06:24:29.713 に答える
4

ここでの主な問題は、ここで反復する方法が間違っていることだと思います。

次のような方がうまくいくと思います:

for (j in final$clusters){
    for (i in final$clusters[j]){
        print i
    }
}

ループのドキュメントは次のとおりです: http://manuals.bioinformatics.ucr.edu/home/programming-in-r#TOC-For-Loop for subsetting: http://www.statmethods.net/management/subset.html

幸運を

于 2013-02-09T03:35:27.803 に答える