目标:我正在编写的函数的一部分要求复制每个变量/列的每个值。我有复制每一列的代码,但现在我需要将它们连接在一起。例如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)
您可以使用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)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |