将R中的每两列粘贴在一起

将R中的每两列粘贴在一起,r,dataframe,R,Dataframe,目标:我正在编写的函数的一部分要求复制每个变量/列的每个值。我有复制每个列的代码,但现在我需要将它们连接在一起。例123至123123 考虑到这一点,给定一个数据帧: df <- data.frame(a = c(rep(c(111,222,333),2)), b = c(rep(c(111,222,333),2)), c = c(rep(c(444,555,666),2)), d = c(rep(c(444,555,666),2))) 换句话说,连接

目标:我正在编写的函数的一部分要求复制每个变量/列的每个值。我有复制每个列的代码,但现在我需要将它们连接在一起。例123至123123

考虑到这一点,给定一个数据帧:

df <- data.frame(a = c(rep(c(111,222,333),2)), b = c(rep(c(111,222,333),2)), 
                 c = c(rep(c(444,555,666),2)), d = c(rep(c(444,555,666),2)))
换句话说,连接df[,1]和df[,2],df[,3]和df[,4]等

我已从以下位置尝试此代码:

我不知道为什么paste会将df[,I]的值返回a作为c

使用:

platform       x86_64-apple-darwin15.6.0   
arch           x86_64                      
os             darwin15.6.0                
system         x86_64, darwin15.6.0        
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes   
可以使用mapply将每两列粘贴在一起

i <- seq.int(1L,length(df),by = 2L)
c(mapply(paste0, df[i], df[i + 1]))

#[1] "111111" "222222" "333333" "111111" "222222" "333333" "444444" "555555" 
#    "666666" "444444" "555555" "666666"
可以使用mapply将每两列粘贴在一起

i <- seq.int(1L,length(df),by = 2L)
c(mapply(paste0, df[i], df[i + 1]))

#[1] "111111" "222222" "333333" "111111" "222222" "333333" "444444" "555555" 
#    "666666" "444444" "555555" "666666"
使用data.table的方法

使用data.table的方法

vector i可以用于更自动化的流程吗?该函数所采用的数据帧可以是任意大小的向量,我可以用它来更自动化这个过程吗?函数所采用的数据帧可以是任意大小
platform       x86_64-apple-darwin15.6.0   
arch           x86_64                      
os             darwin15.6.0                
system         x86_64, darwin15.6.0        
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes   
i <- seq.int(1L,length(df),by = 2L)
c(mapply(paste0, df[i], df[i + 1]))

#[1] "111111" "222222" "333333" "111111" "222222" "333333" "444444" "555555" 
#    "666666" "444444" "555555" "666666"
library(data.table)

d <- rbind(data.table(df[, 1:2]), data.table(df[, 3:4]), use.names = F)

paste0(d$a, d$b)
# [1] "111111" "222222" "333333" "111111" "222222" "333333" "444444" "555555" "666666" "444444" "555555" "666666"