将R中的每两列粘贴在一起
目标:我正在编写的函数的一部分要求复制每个变量/列的每个值。我有复制每个列的代码,但现在我需要将它们连接在一起。例123至123123 考虑到这一点,给定一个数据帧:将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))) 换句话说,连接
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"