Ошибка в R - количество столбцов результата не кратно длине вектора (аргумент 1) - PullRequest
2 голосов
/ 29 мая 2020

Я получил эту ошибку, когда пытался запустить этот код в 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)

Предупреждение: In rbind (const1, const2, const3, const4, const5, const6, const7,
количество столбцов результата не кратно длине вектора (аргумент 1)

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Мы можем получить все векторы в list, преобразовать в data.frame с помощью map и связать их в один набор данных

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, после создания list из vector s, введите NA в конце для более коротких элементов списка, а затем 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 голос
/ 29 мая 2020

Вы можете получить все векторы в списке и использовать 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
...