在R中,我有一个列表,其中包含元素数量不等的对象。例如,为R列表中不等大小的对象重复元素
l <- list(a=c(1,2), b=3, c=4)
我已经知道如何找到任何对象的最大长度:
lmax <- max(unlist(lapply(l,length)))
,以及如何确定哪些对象是不是最长:
notlongest <- unlist(lapply(l,length)) != max(unlist(lapply(l,length)))
我现在需要做的是:对于列表中的那些对象是notlongest
,重复它们的元素的次数lmax
并获得一个新列表。也就是说,对象B和C,重复它们的元素两次,所以我得到一个新的列表,看起来是这样的:
newl <- list(a=c(1,2), b=c(3,3), c=c(4,4))
我敢肯定有一个简单的答案与lapply
功能,但我不能想办法。如果以前有人问过这个问题,请抱歉。谢谢!
一些挑剔的使用,可以简化您的'不公开(lapply())'使用'sapply'连击。 – 2012-04-21 16:41:20