如何动态地在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
}
我不知道此代码是否有效,因为我也不知道如何在文件中打印结果(使用write
或write.table
)。
答案 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'))
}