语句很简单,只有一句
d1 <- do.call(cbind, lapply(lapply(d, unlist), length<-
, max(lengths(d))))
lapply(x,fun),lapply接收两个值,x为向量或列表,fun是方法,这个函数的意思是将fun方法作用到x的每个元素,返回一个与x相同长度的列表
unlist函数接收一个列表,unlist将其简化为一个包含列表中所有原子成分的向量
外面嵌套的那层lapply函数,是将每个向量元素的长度设定为最长的那个长度,缺失值用NA补齐
cbind是按列合并向量,如果两列数量不一样会自动重复短的那列
do.call函数与lapply函数功能类似,但有一点不一样
lapply()为列表中的每个元素应用一个给定的函数,所以会有几个函数调用。
do.call()将给定的函数作为一个整体应用于列表,所以只有一个函数调用。
详细差别见http://www.dovov.com/rlapplydo-call.html
使用R语言将不同长度的向量合并为数据框
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...