2017-08-11 16 views
0

Rのリストのコンポーネントに要素を動的に追加するにはどうすればよいですか?Rのリストのコンポーネントに要素を動的に追加する

たとえば、私は次のように "number"と "numberPowerTwo"という2つのコンポーネントを持つ "mylist"と呼ばれるものを持っています。各ループサイクルで1つの要素を各コンポーネントに追加する必要があります。私のmylistリスト。

N <- 10 
mylist <- list(number = c(), numberPowerTwo = c()) 

for (i in 1:N){ 
    n <- i 
    n2 <- i * i 

    mylist[i]$number <- n 
    mylist[i]$numberPowerTwo <- n2 
} 

私は(writeまたはwrite.tableを使用して)ファイルに結果を印刷する方法も知らないので、私はこのコードの動作かどうかを知りません。以下

答えて

2

てみてくださいコード:ファイルとして出力するには

N <- 10 
mylist <- list(number = c(), numberPowerTwo = c()) 

for (i in 1:N){ 
    n <- i 
    n2 <- i * i 

    mylist[['number']][i] <- n 
    mylist$numberPowerTwo[i] <- n2 
} 

は、それはあなたが望む形式によって異なります。結果はリストである、私はRDataをお勧めします:

save(mylist, file = 'mylist.RData') 

あなたができるだけでload('mylist.RData')

xlsxのパッケージをお持ちの場合は、mylistの各要素を1つのファイルとしてまとめて1つのファイルとして出力することができます。それ以外の場合は、各要素のwrite.csvmylistとすることができます。

# one file with multiple sheets 
for (i in 1:length(mylist)) { 
    write.xlsx(mylist[[i]], 'mylist.xlsx', append = T, row.names = F, 
       sheetName = names(mylist)[i]) 
} 
# separate files for each element 
for (i in 1:length(mylist)) { 
    write.csv(mylist[[i]], paste0(names(mylist)[i], '.csv')) 
} 
+0

ありがとう、@林Lin!どうやらそれは働いた。どのように結果を印刷できますか? –

+1

あなたのリストの要素は常に同じ長さで、関連するデータを含んでいるので、それらを 'data.frame'に格納する方が良いでしょう。幸いにも、Seanのコードはまったく同じように動作します。こうすることで、 'write.table'を使ってデータのファイルを作成することができます。 –

+0

@GuilhermeCampos最新情報をご覧ください。また、ネイサン氏の言うように、簡単に出力するために、「マイリスト」をさらに操作することができます。 –

関連する問題