web-dev-qa-db-ja.com

Rのリストオブジェクトの要素にインデックスを付ける方法

いくつかのtxtテーブルをインポートし、それらをリストとして保持するために、次のことを行っています。

# set working directory - the folder where all selection tables are stored
hypo_selections<-list.files() # change object name according to each species
hypo_list<-lapply(hypo_selections,read.table,sep="\t",header=T) # change object name according to each species

Hypo_list [1]のように、特定の1つの要素にアクセスしたいとします。各要素はテーブルを表すため、特定のセル(行と列)にアクセスするにはどうすればよいですか?

私はそれのような何かをしたいと思います:

a<-hypo_list[1]

a[1,2]

しかし、次のエラーメッセージが表示されます。

Error in a[1, 2] : incorrect number of dimensions

それを行う賢い方法はありますか?

前もって感謝します!

20
Mohr

リストのインデックス付けは、二重括弧、つまりhypo_list[[1]]を使用して行われます(例: http://www.r-tutor.com/r-introduction/list )。ところで:read.tableはテーブルではなくデータフレームを返します(?read.tableの値セクションを参照)。したがって、テーブルオブジェクトのリストではなく、データフレームのリストがあります。ただし、主要なメカニズムはテーブルとデータフレームで同じです。

:Rでは、最初のエントリのインデックスは1です(他の言語のような0ではありません)。

データフレーム

l <- list(anscombe, iris)   # put dfs in list
l[[1]]             # returns anscombe dataframe

anscombe[1:2, 2]   # access first two rows and second column of dataset
[1] 10  8

l[[1]][1:2, 2]     # the same but selecting the dataframe from the list first
[1] 10  8

テーブルオブジェクト

tbl1 <- table(sample(1:5, 50, rep=T))
tbl2 <- table(sample(1:5, 50, rep=T))
l <- list(tbl1, tbl2)  # put tables in a list

tbl1[1:2]              # access first two elements of table 1 

今リストで

l[[1]]                 # access first table from the list

1  2  3  4  5 
9 11 12  9  9 

l[[1]][1:2]            # access first two elements in first table

1  2 
9 11 
32
Mark Heckmann