首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从更新的四个动态和不规则向量生成data.frame?

如何从更新的四个动态和不规则向量生成data.frame?
EN

Stack Overflow用户
提问于 2016-08-18 01:51:01
回答 3查看 103关注 0票数 0

我有四个不同长度/变化长度的向量,例如A,B,C,D。我想要建立一个主向量,它是由and中的向量的顶部行组成,然后是and的第二高行。

c(A1,1,B1,C1,D1,A1,A2,1,B2,1 ...and等)

我有这样的想法,把A,B,C,D,然后转到每一行,但是由于and的长度不同,这是不可能的。

注意:虽然A的大小不同,但随着时间的推移,随着数据的增加,它们会增长.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-18 04:04:07

我找到了我的解决方案。使用以下引用的cbind.fill代码:cbind a df with an empty df (cbind.fill?)

代码语言:javascript
运行
AI代码解释
复制
cbind.fill <- function(...){
nm <- list(...) 
nm <- lapply(nm, as.matrix)
n <- max(sapply(nm, nrow)) 
do.call(cbind, lapply(nm, function (x) 
    rbind(x, matrix(, n-nrow(x), ncol(x))))) 
}

然后,使用以下方法将其转换为主向量,该向量接受A的顶部行:

代码语言:javascript
运行
AI代码解释
复制
X<-matrix(t(X),ncol=1)
票数 0
EN

Stack Overflow用户

发布于 2016-08-18 01:58:31

我们将vectors放置在一个list中,然后通过将length (length<-)赋值给lengthsmax 'lst',将length(length<-)分配给lengthsmax,从而使list的长度保持不变,然后将MARGIN=1apply转换为data.frame,然后将每一行的元素sortunlist指定为data.frame

代码语言:javascript
运行
AI代码解释
复制
d1 <- data.frame(lapply(lst, `length<-`, max(lengths(lst))))
unlist(apply(d1, 1, FUN = function(x) sort(x)))

数据

代码语言:javascript
运行
AI代码解释
复制
lst <- list(A = c(1, 5, 7, 5), B = c(3, 4, 6, 2, 5), C  = c(5, 3, 2), 
             D = c(8, 1, 3, 5, 6))
票数 0
EN

Stack Overflow用户

发布于 2016-08-18 02:22:16

首先,您应该将松散变量组装到一个列表中,以便于在不重复代码的情况下对它们进行自动化处理。然后,我们可以有效地迭代最长向量的索引范围,并在所有输入向量中索引驻留在该索引处的元素。原子向量的超限索引自然会返回NA,满足了短向量的需要。此外,由于您只关心每个输入矩阵的第一列,所以只在初始组装步骤中组装这些列会有所帮助。

代码语言:javascript
运行
AI代码解释
复制
lst <- lapply(mget(LETTERS[1:4]),`[`,,1L);
lst;
## $A
## [1] 37 56
##
## $B
## [1] 94 65 61  5 19
##
## $C
## [1] 99 37 76 90
##
## $D
## [1]  1 37
##
c(sapply(seq_len(max(lengths(lst))),function(i) sapply(lst,`[`,i)));
##  [1] 37 94 99  1 56 65 37 37 NA 61 76 NA NA  5 90 NA NA 19 NA NA

数据

代码语言:javascript
运行
AI代码解释
复制
set.seed(1L);
for (n in LETTERS[1:4]) assign(n,matrix(sample(0:99,sample(1:5,1L)*2L),ncol=2L));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39015077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档