在R中数据帧的每一列之间插入一个空列

在R中数据帧的每一列之间插入一个空列,r,dataframe,R,Dataframe,假设您有一个由四列组成的数据框架: dat <- data.frame(A = rnorm(5), B = rnorm(5), C = rnorm(5), D = rnorm(5)) 你会怎么做 我想对其执行此操作的dataframe有数百列,因此显然我不想键入每一列并像这样天真地添加它们: dat$A1 <- NA dat$B1 <- NA dat$C1 <- NA dat$D1 <- NA dat <- dat[, c("A", "A1", "B",

假设您有一个由四列组成的数据框架:

dat <- data.frame(A = rnorm(5), B = rnorm(5), C = rnorm(5), D = rnorm(5))
你会怎么做

我想对其执行此操作的dataframe有数百列,因此显然我不想键入每一列并像这样天真地添加它们:

dat$A1 <- NA
dat$B1 <- NA
dat$C1 <- NA
dat$D1 <- NA

dat <- dat[, c("A", "A1", "B", "B1", "C", "C1", "D", "D1")]
dat$A1你可以试试这个

df <- cbind(dat, dat)
df <- df[, sort(names(df))]
df[, seq(2, 8,by=2)] <- NA
names(df) <- sub("\\.", "", names(df))
df
#使用两倍的列数创建新的数据框
bigdat你可以试试

 res <- data.frame(dat, dat*NA)[order(rep(names(dat),2))]
 res     
 #           A A.1           B B.1          C C.1           D D.1
 #1 1.15660588  NA  0.78350197  NA -0.2098506  NA  2.07495662  NA
 #2 0.60107853  NA  0.03517539  NA -0.4119263  NA -0.08155673  NA
 #3 0.99680981  NA -0.83796981  NA  1.2742644  NA  0.67469277  NA
 #4 0.09940946  NA -0.89804952  NA  0.3419173  NA -0.95347049  NA
 #5 0.28270734  NA -0.57175554  NA -0.4889045  NA -0.11473839  NA
# create new data frame with twice the number of columns
bigdat <- data.frame(matrix(ncol = dim(dat)[2]*2, nrow = dim(dat)[1]))

# set sequence of target column indices
inds <- seq(1,dim(bigdat)[2],by=2)

# insert values
bigdat[,inds] <- dat

# set column names
colnames(bigdat)[inds] <- colnames(dat)
 res <- data.frame(dat, dat*NA)[order(rep(names(dat),2))]
 res     
 #           A A.1           B B.1          C C.1           D D.1
 #1 1.15660588  NA  0.78350197  NA -0.2098506  NA  2.07495662  NA
 #2 0.60107853  NA  0.03517539  NA -0.4119263  NA -0.08155673  NA
 #3 0.99680981  NA -0.83796981  NA  1.2742644  NA  0.67469277  NA
 #4 0.09940946  NA -0.89804952  NA  0.3419173  NA -0.95347049  NA
 #5 0.28270734  NA -0.57175554  NA -0.4889045  NA -0.11473839  NA
dat[paste0(names(dat),1)] <- NA
dat[order(names(dat))]