考虑这个例子
n <- 100
for (j in 1:n) {
print(sprintf("Processing feature %i from %i; %1.0f",j,n,j/n*100))
}
但我希望在每行末尾有一个带有“%”的输出文本,就像
Processing feature 15 from 100; 15%
当然
n <- 100
for (j in 1:n) {
print(sprintf("Processing feature %i from %i; %1.0f%",j,n,j/n*100))
}
返回错误信息,因为最后一个 "%"
如何使用 sprintf 命令获取输出字符串末尾的百分号“%”?
提前致谢
最佳答案
1) 使用双百分比。 (有关所有百分比代码,请参阅 ?sprintf
。)
j <- 2; n <- 3
sprintf("Processing feature %i of %i (%.0f%%)", j, n, 100 * j / n)
## [1] "Processing feature 2 of 3 (67%)"
1a) 或舍入最后一个以便我们也可以使用 %i:
sprintf("Processing feature %i of %i (%i%%)", j, n, round(100 * j / n))
## [1] "Processing feature 2 of 3 (67%)"
2) 如果我们在 print
(或任何函数)前面加上来自 gsubfn 的 fn$
,那么我们可以使用 $ 来引用一个变量(前提是它只包含单词字符并且它的末尾由非单词字符分隔)和反引号包含 R 代码。
library(gsubfn)
fn$print("Processing feature $j of $n (`round(100*j/n)`%)")
[1] "Processing feature 2 of 3 (67)%"
关于r - 在 sprintf 中使用百分号 (%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66187032/