动态地将元素添加到R中列表的组件

时间:2017-08-11 18:50:22

标签: r list

如何动态地在R中的列表组件中添加元素?

例如,我有list名为" mylist"有两个组件,一个名为" number"另一个名为" numberPowerTwo",如下所示,需要在每个循环周期中为我mylist列表的每个组件添加1个元素。

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
}

我不知道此代码是否有效,因为我也不知道如何在文件中打印结果(使用writewrite.table)。

1 个答案:

答案 0 :(得分: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')

或者您可能需要一个excel文件,如果您有包xlsx,则可以将mylist的每个元素作为一个表格输出,并将所有元素一起输出为一个文件。否则,write.csv的每个元素只能mylist

# 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'))
}