我有3列
2个相同的长度
1的长度较短
以下是列:
column1 <- letters[1:10]
column2 <- letters[1:15]
column3 <- letters[1:15]
我希望将所有3列都连接在一起,但是column1中缺少的5个值是NA?
我该怎么做?小玩意儿?
答案 0 :(得分:0)
您可以更改向量的长度
column1 <- letters[1:10]
column2 <- letters[1:15]
length(column1) <- length(column2)
现在
> column1
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" NA NA NA NA NA
我们可以将其包装在函数中
cbind_dif <- function(x = list()){
# Find max length
max_length <- max(unlist(lapply(x, length)))
# Set length of each vector as
res <- lapply(x, function(x){
length(x) <- max_length
return(x)
})
return(as.data.frame(res))
}
# Example usage:
> cbind_dif(list(column1 = column1, column2 = column2))
column1 column2
1 a a
2 b b
3 c c
4 d d
5 e e
6 f f
7 g g
8 h h
9 i i
10 j j
11 <NA> k
12 <NA> l
13 <NA> m
14 <NA> n
15 <NA> o
答案 1 :(得分:0)
n <- max(length(column1), length(column2), length(column3))
data.frame(column1[1:n],column2[1:n],column3[1:n])
column1.1.n. column2.1.n. column3.1.n.
1 a a a
2 b b b
3 c c c
4 d d d
5 e e e
6 f f f
7 g g g
8 h h h
9 i i i
10 j j j
11 <NA> k k
12 <NA> l l
13 <NA> m m
14 <NA> n n
15 <NA> o o
答案 2 :(得分:0)
使用rowr包中的cbind.fill可以轻松实现。
library(rowr)
new<- cbind.fill(column1,column2,column3)
我希望这对您有帮助