2017-06-14 80 views
2

我有兩個(或多個)矢量,並希望將它們添加到數據框中,將空白空間替換爲NA,而無需在矢量聲明中指定。這甚至有可能嗎?在數據框中填充NA以添加矢量

df <- data.frame() 
e <- c(1,2,3,4) 
q <- c(1,2,3,4,5) 
df <- rbind(df, e) 
df <- rbind(df, q) 

要獲得

x1 x2 x3 x4 x5 
1 1 2 3 4 NA 
2 1 2 3 4 5 

而不是

x1 x2 x3 x4 
1 1 2 3 4 
2 1 2 3 4 
+0

您可以在dplyr使用bind_rows,我還張貼我的答案 – Wen

回答

0
#Put all vectors in a list  
mylist = list(e, q) 
#Find out the length of the vector with most elements 
max_length = max(lengths(mylist)) 
#subset all vectors to extend to the max_length and rbind 
data.frame(do.call(rbind, lapply(mylist, function(x) x[1:max_length]))) 
# X1 X2 X3 X4 X5 
#1 1 2 3 4 NA 
#2 1 2 3 4 5 

主要伎倆是,如果子集超出了實際數量的元素它都有,矢量其餘元素將是NA。測試

(1:5)[1:7] 
#[1] 1 2 3 4 5 NA NA 
+1

謝謝!我很欣賞快速而準確的迴應。 –

0

dplyr::bind_rows

df <- data.frame() 
e <- c(1,2,3,4) 
q <- c(1,2,3,4,5) 
df1 <- rbind(df, e) 
df2 <- rbind(df, q) 
bind_rows(df1,df2) 

    X1 X2 X3 X4 X5 
1 1 2 3 4 NA 
2 1 2 3 4 5