R中的错误--结果的列数不是向量长度的倍数(参数1)

问题描述 投票:0回答:1

当我试图在R中运行这段代码时,我收到了这个错误。

const1 = c(1,1,1,1,1)
const2 = c(1,1,1,1,1)
const3 = c(1,1,1,1,1)
const4 = c(1,1,1,1,1)
const5 = c(1,1,1,1,1)
const6 = c(1,1,1,1,1)
const7 = c(35,16,125,25,40,5)
const8 = c(37,17,130,27,43,7)
const9 = c(39,18,136,29,46,8)
const10 = c(42,19,139,30,50,10)
const11 = c(45,20,144,33,52,11)
f.con <- rbind(const1,const2,const3,const4,const5,const6,const7,const8,const9,const10,const11)

警告信息:在rbind(const1, const2, const3, const4, const5, const6, const7中,结果的列数不是向量长度的倍数(arg 1)

r linear-programming
1个回答
3
投票

我们可以将所有的向量放入一个 list,转换为 data.framemap 并将它们绑定到一个单一的数据集中。

library(purrr)
map_dfr(mget(ls(pattern = '^const\\d+$')), ~ as.data.frame(t(.x)))

或与 unnest_wider

library(tidyr)
mget(paste0('const', 1:11)) %>%
      tibble(col1 = .) %>% 
      unnest_wider(c(col1))

或使用 base R,在创建一个 listvectorNA 对于较短的列表元素,则在最后加上 rbind

lst1 <- mget(paste0('const', 1:11))
do.call(rbind, unname(lapply(lst1, `length<-`, max(lengths(lst1)))))
#        [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]    1    1    1    1    1   NA
# [2,]    1    1    1    1    1   NA
# [3,]    1    1    1    1    1   NA
# [4,]    1    1    1    1    1   NA
# [5,]    1    1    1    1    1   NA
# [6,]    1    1    1    1    1   NA
# [7,]   35   16  125   25   40    5
# [8,]   37   17  130   27   43    7
# [9,]   39   18  136   29   46    8
#[10,]   42   19  139   30   50   10
#[11,]   45   20  144   33   52   11

1
投票

你可以在一个列表中得到所有的向量,然后使用 sapply 来提取每个数据。

data <- mget(paste0('const', 1:11))
t(sapply(data, `[`, 1:max(lengths(data))))

#        [,1] [,2] [,3] [,4] [,5] [,6]
#const1     1    1    1    1    1   NA
#const2     1    1    1    1    1   NA
#const3     1    1    1    1    1   NA
#const4     1    1    1    1    1   NA
#const5     1    1    1    1    1   NA
#const6     1    1    1    1    1   NA
#const7    35   16  125   25   40    5
#const8    37   17  130   27   43    7
#const9    39   18  136   29   46    8
#const10   42   19  139   30   50   10
#const11   45   20  144   33   52   11
© www.soinside.com 2019 - 2024. All rights reserved.