6

3つの「列」を持つリストがあります:

test = list(1:100, 1:100,1:100)

たとえば、各列の最初の 10 エントリにアクセスするにはどうすればよいですか?

test[c(1:10),]

動作しません。私はそれがdata.framesで機能することを知っています:

as.data.frame(test)[1:10,1:3]

これをリストで解決するにはどうすればよいですか?

編集:より一般的な答えを得るには:

1 列目と 3 列目のエントリ 15 から 20 を取得するにはどうすればよいですか? これが私がdata.framesに対して行うことです:

as.data.frame(test)[c(15:20),c(1,3)]

data.frames とリストでは、インデックス付けが大きく異なるようです。

4

3 に答える 3

12

関数lapply()とでそれを行うことができますhead()

lapply(test,head,n=10)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
 [1]  1  2  3  4  5  6  7  8  9 10

n=リスト要素により小さい値がある場合、これはすべての値を表示します。

test = list(1:100, 1:100,1:5)
lapply(test,head,n=10)
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
[1] 1 2 3 4 5
于 2013-08-13T12:54:17.957 に答える
3

必要な戻り値の型に応じて、lapplyまたはsapply便利になります。必要な要素を取得するために使用[します。

lapply( test , `[` , 1:10 )
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[3]]
 [1]  1  2  3  4  5  6  7  8  9 10

 sapply( test , `[` , 1:10 )
      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    2    2
 [3,]    3    3    3
 [4,]    4    4    4
 [5,]    5    5    5
 [6,]    6    6    6
 [7,]    7    7    7
 [8,]    8    8    8
 [9,]    9    9    9
[10,]   10   10   10
于 2013-08-13T12:54:21.960 に答える