更改sprintf()中的十进制字符
我可以使用以下命令更改输出中的十进制字符:更改sprintf()中的十进制字符,r,printf,R,Printf,我可以使用以下命令更改输出中的十进制字符: > 1/2 [1] 0.5 > options(OutDec = ',') > 1/2 [1] 0,5 但是,此更改不会影响sprintf()函数 > sprintf('%.1f', 1/2) [1] "0.5" 所以,我的问题是:有一个简单的方法来改变它(十进制字符)?我认为我不能使用“简单”的RE,因为不是每个都需要,交易 我不知道怎么做,所以我不能说我已经做了什么。我想你可以通过适当地设置你的区域设置来做到这一点,确保
> 1/2
[1] 0.5
> options(OutDec = ',')
> 1/2
[1] 0,5
但是,此更改不会影响sprintf()
函数
> sprintf('%.1f', 1/2)
[1] "0.5"
所以,我的问题是:有一个简单的方法来改变它(十进制字符)?我认为我不能使用“简单”的RE,因为不是每个
都需要,
交易
我不知道怎么做,所以我不能说我已经做了什么。我想你可以通过适当地设置你的区域设置来做到这一点,确保
LC\u NUMERIC
组件被设置为使用逗号作为十进制分隔符的区域设置()
这发出了一个警告,R的行为可能会异常;生成输出后,您可能希望将
LC\u NUMERIC
切换回C 也许??将系统区域设置(Sys.setlocale
)更改为使用逗号作为十进制分隔符的区域设置?我已经使用逗号作为十进制数(Sys.getlocale()“LC_COLLATE=葡萄牙语_巴西.1252;LC_CTYPE=葡萄牙语_巴西.1252;LC_MONETARY=葡萄牙语_巴西.1252;LC_NUMERIC=C;LC_TIME=葡萄牙语_巴西.1252”
)。我想你的问题是你有LC_NUMERIC=C
<代码>系统设置语言环境(“LC_NUMERIC”,“es_es.utf8”);sprintf(“%f”,1.5)为我提供了“1500000”
(还有一个警告,R可能会表现得很奇怪;您可能想在生成输出后立即将LC\u NUMERIC
切换回C
)。我在Sys.setlocale中的2:In Sys.setlocale(“LC\u NUMERIC”,“es\es.utf8”):操作系统报告无法执行将区域设置设置为“es_es.utf8”的请求
。。。我尝试将es
更改为pt
,但给出了您可能需要的相同错误消息葡萄牙语(巴西)。1252
(我总是很难弄清楚我的计算机上有哪些可用的语言环境;在unix上,locale-a
这样做了:可能仍然没有在这里工作……不知道为什么,与我的朋友一起工作过:/但是现在我知道我需要做什么了!谢谢!
Sys.setlocale("LC_NUMERIC","es_ES.utf8")
sprintf("%f",1.5)
## "1,500000"