【发布时间】:2018-10-18 17:01:40
【问题描述】:
我有一个具有这种结构的列表列表:
a = list("t" = list('abc'), "c" = list('def','ghi'))
b = list("t" = list('jk','kl'), "c" = list('lmn'))
c = list("t" = list('op','pq','z'), "c" = list('qrs','tuv','wxy'))
ls = list('one'=a,'two'=b,'three'=c)
我需要将它存储在一个文本文件中。由于并非所有元素的长度都相同,因此在将其转换为数据框并写入文件之前,我需要先填充 nans。我想要一个看起来像这样的文件(这里大致显示为 .csv,但 .txt 很好):
t1, t2, t3, c1, c2, c3
one,abc,nan,nan,def,ghi,nan
two,jk,kl,nan,lmn,nan,nan
three,op,pq,z,qrs,tuv,wxy
我是 R 新手,所以我只能大致了解如何执行此操作,但无法弄清楚语法。类似这样的伪代码:
lapply(ls, fill nans)
lapply(ls, unlist)
lapply(ls, names=[t1,t2,t3,c1,c2,c3])
df=data.frame(ls)
write.table(df)
有人可以帮我完成这个吗?
编辑:我能够在以下方面取得一些进展:
ellength <- function(ls,i) {return(length(ls[[i]]))}
fillna <- function(ls,i,m) {
if (length(ls[[i]])<m) {
return(append(ls[[i]],vector('list',length=m-length(ls[[i]]))))
}
else {return(ls[[i]])}
}
make_col <- function(ls,i){
return(lapply(ls,fillna,i=i,m=max(unlist(lapply(ls,ellength,i=i)))))
}
> matrix(list(make_col(ls,'t'),make_col(ls,'c')))
[,1]
[1,] List,3
[2,] List,3
但我仍然无法以任何连贯的方式将其写入文件。这在 Python 中非常简单;我肯定错过了什么。帮忙?
【问题讨论】:
标签: r list write.table