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

Ama*_*mar 1 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)))
Run Code Online (Sandbox Code Playgroud)

您如何将每两列粘贴在一起以实现此目的或类似目的:

"111111" "222222" "333333" "111111" "222222" "333333" "444444" "555555" "666666" "444444" "555555" "666666"
Run Code Online (Sandbox Code Playgroud)

换句话说,串连df[, 1]和df[, 2],df[, 3]和df[, 4]等

我从这里尝试过这段代码:

i <- seq.int(1L,length(df),by = 2L)
paste0(df[, i],df[ , i])
Run Code Online (Sandbox Code Playgroud)

但它返回这个:

[1] "c(111, 222, 333, 111, 222, 333)c(111, 222, 333, 111, 222, 333)"
[2] "c(444, 555, 666, 444, 555, 666)c(444, 555, 666, 444, 555, 666)"
Run Code Online (Sandbox Code Playgroud)

我不确定为什么 paste 返回df[, i]“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   
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 5

您可以使用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"
Run Code Online (Sandbox Code Playgroud)