gpt4 book ai didi

r - 将不同长度的向量合并到动态矩阵

转载 作者:行者123 更新时间:2023-12-04 08:34:46 26 4
gpt4 key购买 nike

如何将 5 个向量合并为一个动态/灵活矩阵?

  V1 <- c(13, 31, 54)
name1 <- c("a", "b2", "c")

V2 <- c(17, 27, 34, 52)
name2 <- c("a", "b1", "b2", "c")

V3 <- c(19, 25, 33, 47, 58, 44)
name3 <- c("a", "b1", "b2", "b3", "c", "d")

V4 <- c(13, 29, 35, 56)
name4 <- c("a", "b1", "b2", "c")

V5<-c(21, 35, 67, 82, 96)
name5<-c("d", "c", "b3", "b1", "b2")
并创建一个这样的矩阵:
enter image description here

最佳答案

我们可以使用 mget 将对象加载到全局环境中。基于 pattern对象名称,即那些以 ( ^ ) 'V' 开头的对象名称,后跟一个或多个数字 ( \\d+ ) 在字符串的末尾 ( $ )。然后,追加 NA在每个列表元素的末尾基于 max lengthslist

lst1 <- mget(ls(pattern = '^V\\d+$'))
t(sapply(lst1, `length<-`, max(lengths(lst1))))
如果我们也需要名字
lst2 <- mget(ls(pattern = '^name\\d+$'))
out <- xtabs(unlist(lst1) ~ rep(seq_along(lst1), lengths(lst1)) +
unlist(lst2))
names(dimnames(out)) <- NULL

或者另一个选项是 map2来自 purrr
library(purrr)    
map2_dfr(lst1, lst2, setNames)
-输出
# A tibble: 5 x 6
# a b2 c b1 b3 d
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 13 31 54 NA NA NA
#2 17 34 52 27 NA NA
#3 19 33 58 25 47 44
#4 13 35 56 29 NA NA
#5 NA 96 35 82 67 21

关于r - 将不同长度的向量合并到动态矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64849030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com