R 中的错误 - 结果的列数不是向量长度的倍数 (arg 1)
Error in R - Number of columns of result is not a multiple of vector length (arg 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)
警告message:In rbind(const1, const2, const3, const4, const5, const6, const7,
结果的列数不是向量长度的倍数 (arg 1)
我们可以将所有向量放入 list
,使用 map
转换为 data.frame
并将它们绑定到单个数据集
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
,在创建 vector
的 list
之后,在末尾填充 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
您可以获取列表中的所有向量并使用 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
我在 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)
警告message:In rbind(const1, const2, const3, const4, const5, const6, const7,
结果的列数不是向量长度的倍数 (arg 1)
我们可以将所有向量放入 list
,使用 map
转换为 data.frame
并将它们绑定到单个数据集
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
,在创建 vector
的 list
之后,在末尾填充 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
您可以获取列表中的所有向量并使用 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