R:在“正”字符前面添加“ +”

时间:2018-06-21 02:30:33

标签: r

我正在尝试添加“ +”符号以显示制成字符的数字的百分比增加,以便在所有字符之前添加一个%符号。这是一些示例数据:

###Create Data
First.Name <- c("Sharon", "Megan", "Kevin")
ProjManagment <- c(5, 7,3)
ClientManagment <- c(3,6,2)
StatProgram <- c(2,3,7)
jobForm = data.frame(First.Name, ProjManagment, ClientManagment, StatProgram)

以及将它们转换为百分比的代码:

as.character(jobForm[2:4])
jobForm[2:4] <- lapply(jobForm[2:4], function(x) paste(x, "%"))

我尝试这样做:

jobForm[32:39] <- lapply(jobForm[32:39]) function(x) if(strsplit(x[0] != "-")) {paste("+", x)}

这是先前发布的问题中的

jobForm[32:39] <- lapply(jobForm[32:39], function(x, ...)
{
  if (x[1] != "-")
  {
    sprintf(
      fmt = "+ %s",
      format(x, ...)
    )
  }
  else
  {
    x
  }
})

但是没有一个起作用。任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:4)

这里不需要if / else条件。您可以简单地将sprintf与格式说明符"%+d"%+f一起使用;例如

jobForm[2:4] <- lapply(jobForm[2:4], function(x) sprintf("%+3d %%", x))
#  First.Name ProjManagment ClientManagment StatProgram
#1     Sharon          +5 %            +3 %        +2 %
#2      Megan          +7 %            +6 %        +3 %
#3      Kevin          +3 %            +2 %        +7 %

说明:让我们分解格式说明符"%+3d"+标志添加前导加号,3指定三个整数,d({{1} })指定一个整数(浮点数)。我们通过将f中的百分号加倍来​​对其进行转义。

一个进一步演示的最小示例

sprintf

答案 1 :(得分:1)

尝试

jobForm[2:4] <- lapply(jobForm[2:4], function(x) {
  x.c <- paste0(ifelse(x >= 0, "+", ""), x, "%")
})

在将事物转换为字符之前执行此操作-转换是自动的。如果要在不同元素之间使用空格,可以将paste0替换为paste。 (如果您只想在数字后留一个空格,请在%符号前添加该空格。