首页 > 解决方案 > 使用列名称为列内容添加前缀/后缀

问题描述

我想改变数据框的列内容,以便单元格内容以列名为前缀:

> x <- data.frame(VarX = rep(c("A","B"),2), VarY = rep(c("C","D"),2))
> x
  VarX VarY
1    A    C
2    B    D
3    A    C
4    B    D
> x$VarX <- paste0("VarX", x$VarX)
> x$VarY <- paste0("VarY", x$VarY)
> x
   VarX  VarY
1 VarXA VarYC
2 VarXB VarYD
3 VarXA VarYC
4 VarXB VarYD

但一般。我得到的最远关闭是:

x <- data.frame(VarX = rep(c("A","B"),2), VarY = rep(c("C","D"),2))
columns = c("VarX", "VarY")

for(col in columns)
{
  x <- x %>% mutate_at( .vars = col, ~paste0(col, .) )
}
x

但我不喜欢 for 循环。任何人都可以改进代码吗?

另请注意处理 x 列选择的代码。

x <- data.frame(VarX = rep(c("A","B"),2), VarY = rep(c("C","D"),2),
  num = 1:4)

我只想修改列 VarX 和 VarY。

标签: rdplyrtidy

解决方案


你可以试试mapply,即

x[] <- mapply(paste0, names(x), x)

这使,

   VarX  VarY
1 VarXA VarYC
2 VarXB VarYD
3 VarXA VarYC
4 VarXB VarYD

推荐阅读