RBIND 数值向量 (R)
RBIND numeric vectors (R)
我在使用 rbind 连接一系列数值向量时遇到了一些问题。
假设我有:
List1Nums=c(600,500,400,300,200)
List2Nums=c(550,450,350)
List3Nums=c(275,375,475,575)
List4Nums=c(310,410,510,610)
List1=rep(1,length(List1Nums))
List2=rep(2,length(List2Nums))
List3=rep(3,length(List3Nums))
List4=rep(4,length(List4Nums))
我想使用 rbind() 加入 List#Nums 和 List# 系列,这样我的数据框看起来像:
Nums List
600 1
500 1
400 1
300 1
200 1
550 2
450 2
… ...
我尝试使用:
Nums=rbind(List1Nums,List2Nums,List3Nums,List4Nums)
List=rbind(List1,List2,List3,List4)
data=cbind(Nums,List)
我收到一条错误消息:
Warning message:
number of columns of result is not a multiple of vector length (arg 2)
有人可以帮我指明正确的方向吗?
谢谢!
一个选项是 mget
获取 list
中所有 'ListdigitNums' 对象的值,并且 stack
将其设为两列 data.frame
lst1 <- mget(ls(pattern = "^List\d+Nums$"))
setNames(stack(setNames(lst1, seq_along(lst1))), c("Nums", "List"))
# Nums List
#1 600 1
#2 500 1
#3 400 1
#4 300 1
#5 200 1
#6 550 2
#7 450 2
#8 350 2
#9 275 3
#10 375 3
#11 475 3
#12 575 3
#13 310 4
#14 410 4
#15 510 4
#16 610 4
这也可以写成
stack(mget(ls(pattern = "^List\d+Nums$")))
如果'List'值可以是对象名称
如果我们还需要使用List1
、List2
等向量
do.call(rbind, Map(cbind, mget(ls(pattern = "^List\d+Nums$")),
mget(paste0("List", 1:4))))
您也可以这样做:
> Nums=c(List1Nums,List2Nums,List3Nums,List4Nums)
> List=c(List1,List2,List3,List4)
> data=cbind(Nums,List)
>
> data
Nums List
[1,] 600 1
[2,] 500 1
[3,] 400 1
[4,] 300 1
[5,] 200 1
[6,] 550 2
[7,] 450 2
[8,] 350 2
[9,] 275 3
[10,] 375 3
[11,] 475 3
[12,] 575 3
[13,] 310 4
[14,] 410 4
[15,] 510 4
[16,] 610 4
我在使用 rbind 连接一系列数值向量时遇到了一些问题。
假设我有:
List1Nums=c(600,500,400,300,200)
List2Nums=c(550,450,350)
List3Nums=c(275,375,475,575)
List4Nums=c(310,410,510,610)
List1=rep(1,length(List1Nums))
List2=rep(2,length(List2Nums))
List3=rep(3,length(List3Nums))
List4=rep(4,length(List4Nums))
我想使用 rbind() 加入 List#Nums 和 List# 系列,这样我的数据框看起来像:
Nums List
600 1
500 1
400 1
300 1
200 1
550 2
450 2
… ...
我尝试使用:
Nums=rbind(List1Nums,List2Nums,List3Nums,List4Nums)
List=rbind(List1,List2,List3,List4)
data=cbind(Nums,List)
我收到一条错误消息:
Warning message:
number of columns of result is not a multiple of vector length (arg 2)
有人可以帮我指明正确的方向吗?
谢谢!
一个选项是 mget
获取 list
中所有 'ListdigitNums' 对象的值,并且 stack
将其设为两列 data.frame
lst1 <- mget(ls(pattern = "^List\d+Nums$"))
setNames(stack(setNames(lst1, seq_along(lst1))), c("Nums", "List"))
# Nums List
#1 600 1
#2 500 1
#3 400 1
#4 300 1
#5 200 1
#6 550 2
#7 450 2
#8 350 2
#9 275 3
#10 375 3
#11 475 3
#12 575 3
#13 310 4
#14 410 4
#15 510 4
#16 610 4
这也可以写成
stack(mget(ls(pattern = "^List\d+Nums$")))
如果'List'值可以是对象名称
如果我们还需要使用List1
、List2
等向量
do.call(rbind, Map(cbind, mget(ls(pattern = "^List\d+Nums$")),
mget(paste0("List", 1:4))))
您也可以这样做:
> Nums=c(List1Nums,List2Nums,List3Nums,List4Nums)
> List=c(List1,List2,List3,List4)
> data=cbind(Nums,List)
>
> data
Nums List
[1,] 600 1
[2,] 500 1
[3,] 400 1
[4,] 300 1
[5,] 200 1
[6,] 550 2
[7,] 450 2
[8,] 350 2
[9,] 275 3
[10,] 375 3
[11,] 475 3
[12,] 575 3
[13,] 310 4
[14,] 410 4
[15,] 510 4
[16,] 610 4