【问题标题】:Combining several vectors of varying lengths, to make a data frame in R [duplicate]结合几个不同长度的向量,在R中制作一个数据框[重复]
【发布时间】:2020-07-16 15:15:25
【问题描述】:

这感觉就像一个简单的问题,我以某种方式忽略了。所以我有许多不同长度的向量,我想把它们放在一个大数据框中。我一直在使用 merge() 和 full_join() 以及类似的函数,但这些函数似乎主要集中在仅组合 2 个大小不等的字符串。我有 30 个。

#Basically, I have something like this:

a <- c(1:5)
b <- c(1:7)
c <- c(1:20)
d <- c(1:16)
e <- c(1:9)
f <- c(1:42)

#and I would like to make something like this:
a  b  c  d  e  f 

1  1  1  1  1  1 
2  2  2  2  2  2 
3  3  3  3  3  3 
4  4  4  4  4  4 
5  5  5  5  5  5 
NA 6  6  6  6  6
NA 7  7  7  7  7
NA NA 8  8  8  8

ect...
ect...
ect...

有什么建议吗?

【问题讨论】:

标签: r dataframe vector na


【解决方案1】:

你可以试试这个:

library(plyr)
#Put in a list
List <- list(a,b,c,d,e,f)
#Format
List <- lapply(List,function(x) as.data.frame(t(x)))
#Join
df1 <- as.data.frame(t(rbind.fill(List)))
names(df1)<-letters[1:6]

    a  b  c  d  e  f
1   1  1  1  1  1  1
2   2  2  2  2  2  2
3   3  3  3  3  3  3
4   4  4  4  4  4  4
5   5  5  5  5  5  5
6  NA  6  6  6  6  6
7  NA  7  7  7  7  7
8  NA NA  8  8  8  8
9  NA NA  9  9  9  9
10 NA NA 10 10 NA 10
11 NA NA 11 11 NA 11
12 NA NA 12 12 NA 12
13 NA NA 13 13 NA 13
14 NA NA 14 14 NA 14
15 NA NA 15 15 NA 15
16 NA NA 16 16 NA 16
17 NA NA 17 NA NA 17
18 NA NA 18 NA NA 18
19 NA NA 19 NA NA 19
20 NA NA 20 NA NA 20
21 NA NA NA NA NA 21
22 NA NA NA NA NA 22
23 NA NA NA NA NA 23
24 NA NA NA NA NA 24
25 NA NA NA NA NA 25
26 NA NA NA NA NA 26
27 NA NA NA NA NA 27
28 NA NA NA NA NA 28
29 NA NA NA NA NA 29
30 NA NA NA NA NA 30
31 NA NA NA NA NA 31
32 NA NA NA NA NA 32
33 NA NA NA NA NA 33
34 NA NA NA NA NA 34
35 NA NA NA NA NA 35
36 NA NA NA NA NA 36
37 NA NA NA NA NA 37
38 NA NA NA NA NA 38
39 NA NA NA NA NA 39
40 NA NA NA NA NA 40
41 NA NA NA NA NA 41
42 NA NA NA NA NA 42

【讨论】:

    【解决方案2】:
    l <- list(a=a,b=b,c=c,d=d,e=e,f=f)
    df <- data.frame(lapply(l, "length<-", max(lengths(l))))
    

    输出

        a  b  c  d  e  f
    1   1  1  1  1  1  1
    2   2  2  2  2  2  2
    3   3  3  3  3  3  3
    4   4  4  4  4  4  4
    5   5  5  5  5  5  5
    6  NA  6  6  6  6  6
    7  NA  7  7  7  7  7
    8  NA NA  8  8  8  8
    9  NA NA  9  9  9  9
    10 NA NA 10 10 NA 10
    11 NA NA 11 11 NA 11
    12 NA NA 12 12 NA 12
    13 NA NA 13 13 NA 13
    14 NA NA 14 14 NA 14
    15 NA NA 15 15 NA 15
    16 NA NA 16 16 NA 16
    17 NA NA 17 NA NA 17
    18 NA NA 18 NA NA 18
    19 NA NA 19 NA NA 19
    20 NA NA 20 NA NA 20
    21 NA NA NA NA NA 21
    22 NA NA NA NA NA 22
    23 NA NA NA NA NA 23
    24 NA NA NA NA NA 24
    25 NA NA NA NA NA 25
    26 NA NA NA NA NA 26
    27 NA NA NA NA NA 27
    28 NA NA NA NA NA 28
    29 NA NA NA NA NA 29
    30 NA NA NA NA NA 30
    31 NA NA NA NA NA 31
    32 NA NA NA NA NA 32
    33 NA NA NA NA NA 33
    34 NA NA NA NA NA 34
    35 NA NA NA NA NA 35
    36 NA NA NA NA NA 36
    37 NA NA NA NA NA 37
    38 NA NA NA NA NA 38
    39 NA NA NA NA NA 39
    40 NA NA NA NA NA 40
    41 NA NA NA NA NA 41
    42 NA NA NA NA NA 42
    

    【讨论】:

    • 完美!谢谢!!
    • @TaylorBeauvais 如果答案有帮助,请考虑支持或接受
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2022-06-17
    • 2022-01-20
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多