R - 使用百分比强制列出对象(格式化)

问题描述 投票:0回答:2

我想使用percent包中的formattable将数据集强制转换为百分比形式。处女数据集如下所示:

C1 C2  C3  C4
a  .01 .03 .3
b  .3  .5  .7

预期结果(忽略小数):

C1 C2  C3  C4
a  1%  3%  30%
b  30% 50% 70%

现在,我尝试过(列数可能会有所不同,但只有C1会有字符):

DF[, c(2:ncol(DF))] <- percent(DF[, c(2:ncol(DF))])

显示错误:

Error in as_numeric(x) : (list) object cannot be coerced to type 'double'

现在,当我按列方式尝试时,使用循环(percent(DF[, i])),它按预期顺利运行。似乎百分比不能同时强制2D数据。但是,我想知道是否有办法避免循环并提出一个漂亮的解决方案。

提前致谢。

r formattable
2个回答
2
投票

对于这些任务我真的很喜欢dplyr::mutate_if

library(dplyr)
library(formattable)
DF %>% mutate_if(is.numeric, percent)

如果不是所有这些都应该转换为%(例如,因为不是介于0和1之间的值),您可以将其扩展为:

DF %>% mutate_if(function(x){all(between(x, 0, 1))}, percent)

1
投票

我们需要遍历列

library(formattable)
df1[-1] <- lapply(df1[-1], percent)

这可以用base R完成

df1[-1] <- lapply(df1[-1], function(x) paste0(x *100, "%"))
© www.soinside.com 2019 - 2024. All rights reserved.