У меня 3 столбца
2 одинаковой длины
1 имеет меньшую длину
вот столбцы:
column1 <- letters[1:10]
column2 <- letters[1:15]
column3 <- letters[1:15]
Я хочу, чтобы все 3 столбца были объединены вместе, но для 5 недостающих значений в столбце 1 должно быть указано NA?
Что я могу сделать для этого? кусочек?
Вы можете изменить длину вектора
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
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
Вы можете легко это сделать с помощью cbind.fill из пакета rowr.
library(rowr)
new<- cbind.fill(column1,column2,column3)
надеюсь, это поможет
Возможный дубликат Как связать или связать векторы разной длины, не повторяя элементы более коротких векторов?