按给定的列名称顺序添加列data.frame R

按给定的列名称顺序添加列data.frame R,r,dataframe,tidyverse,R,Dataframe,Tidyverse,我在R中有一个data.frame,它的列被命名为L1,L2,L3,等等。但是在给定的迭代中,我随机得到一个data.frame,其中列如下 L1,L3,L5 0.0000000,0.7142857,0.2857143 0.1052632,0.8947368,0.0000000 1.0000000,0.0000000,0.0000000 0.0000000,1.0000000,0.0000000 0.0000000,0.0000000,1.0000000 1.0000000,0.0000000,

我在R中有一个data.frame,它的列被命名为
L1
L2
L3
,等等。但是在给定的迭代中,我随机得到一个data.frame,其中列如下

L1,L3,L5
0.0000000,0.7142857,0.2857143
0.1052632,0.8947368,0.0000000
1.0000000,0.0000000,0.0000000
0.0000000,1.0000000,0.0000000
0.0000000,0.0000000,1.0000000
1.0000000,0.0000000,0.0000000
我需要创建一个具有相同列数和列名顺序的数字,如下所示。添加的列
L2
L4
L6
必须用0填充

L1,L2,L3,L4,L5,L6
0.0000000,0.0,0.7142857,0.0,0.2857143,0.0
0.1052632,0.0,0.8947368,0.0,0.0000000,0.0
1.0000000,0.0,0.0000000,0.0,0.0000000,0.0
0.0000000,0.0,1.0000000,0.0,0.0000000,0.0 
0.0000000,0.0,0.0000000,0.0,1.0000000,0.0
1.0000000,0.0,0.0000000,0.0,0.0000000,0.0
概述 阅读后,我调整了结果以解决您提前不知道列名的问题

使用存储现有
df
中找不到的列,然后通过
for
循环动态添加它们

代码
#加载必要的包--------
图书馆(tidyverse)
图书馆(rlang)
#加载必要的数据-----------
df%
str_摘录(“\\d”)%>%
as.integer()
#从现有的integer.values中标识最大值并添加1----
最大值%
最大值()+1
#确定新列-------
#注意:这要求您提前知道最大值
新列数%
#取这些真值的指数
#不出现在1:max.value和create中
#我们的新专栏
哪个()%>%
粘贴0(“L”,)
#向df动态添加新列------
for(新的.columns中的i){
df%sort())
#查看结果----
df
#一个tibble:6x6
#L1 L2 L3 L4 L5 L6
#        
# 1 0         0 0.714     0 0.286     0
# 2 0.105     0 0.895     0 0         0
# 3 1         0 0         0 0         0
# 4 0         0 1         0 0         0
# 5 0         0 0         0 1         0
# 6 1         0 0         0 0         0
#脚本结束#
带基数R:

# create example data
df <- read.csv(header=T,
        text = "L1,L3,L5
                0.0000000,0.7142857,0.2857143
                0.1052632,0.8947368,0.0000000
                1.0000000,0.0000000,0.0000000
                0.0000000,1.0000000,0.0000000
                0.0000000,0.0000000,1.0000000
                1.0000000,0.0000000,0.0000000")

# create empty dataframe of zeros, with colnames L1:L6
df0 <- as.data.frame(matrix(0, nrow=nrow(df), ncol=6))
names(df0) <- paste0("L", 1:6)

# cbind df with zero cols from df0
df_result <- cbind(df, df0[ , -match(names(df), names(df0))])

# reorder columns L1:L6
df_result <- df_result[ , sort(names(df_result))]
#创建示例数据

df我不能手动添加列,因为这些是随机的哦,明白了!很抱歉没有更仔细地阅读你的问题。让我修改一下。
# create example data
df <- read.csv(header=T,
        text = "L1,L3,L5
                0.0000000,0.7142857,0.2857143
                0.1052632,0.8947368,0.0000000
                1.0000000,0.0000000,0.0000000
                0.0000000,1.0000000,0.0000000
                0.0000000,0.0000000,1.0000000
                1.0000000,0.0000000,0.0000000")

# create empty dataframe of zeros, with colnames L1:L6
df0 <- as.data.frame(matrix(0, nrow=nrow(df), ncol=6))
names(df0) <- paste0("L", 1:6)

# cbind df with zero cols from df0
df_result <- cbind(df, df0[ , -match(names(df), names(df0))])

# reorder columns L1:L6
df_result <- df_result[ , sort(names(df_result))]