使用R语言将不同长度的向量合并为数据框

Python017

使用R语言将不同长度的向量合并为数据框,第1张

语句很简单,只有一句

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

用cbind()吧。比如: x<-cbind(a,b,c,d) 如果都存在一个list(比如叫data)里的话还可以 x<-sapply(data,function(x) x)

如果空的地方用NA 表示的话,那么就可以用如下编码实现

假设 第一组数据是 a1  第二组数据是a2, 他们的行数是一致的!

index<- is.na(a1)

a1[index] <- a2[index]

# here is a example

a1<-c(1,NA,3,NA,5,6,NA,8,9,10)

a1

a2<- 1:10

a2

length(a1)

length(a2)

index<-is.na(a1)

a1[index]<-a2[index]

a1

结果截图:

不知道是不是你想要的结果~

如果你能提供数据结构的话,我或许可以更加明确的提供方法!