我正在尝试添加“ +”符号以显示制成字符的数字的百分比增加,以便在所有字符之前添加一个%符号。这是一些示例数据:
###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
}
})
但是没有一个起作用。任何帮助将不胜感激,谢谢
答案 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
。 (如果您只想在数字后留一个空格,请在%符号前添加该空格。