我想将一个数据框写入包含数字列和字符列的 csv 中。
有些数字列是整数,我想显示为整数,有些是小数,我需要控制小数点后的位数,显然字符列没有变化
我怎样才能做到这一点?
Eq 该数据框中的特定行是
XYZ 8200 0.306060606 ABC
输出应该是
XYZ 8200 0.30 ABC
问候
最佳答案
这将强制小数点后两位数:
# read in some sample data
xyz <- data.frame(v1 = c("a", "b"),
v2 = c(8200, 8100),
v3 = c(365.2121, 365.2122),
v4 = c(0.3060, 0.3260))
format(xyz, digits=2, nsmall=2)
# v1 v2 v3 v4
#1 a 8200.00 365.21 0.31
#2 b 8100.00 365.21 0.33
如果您不希望带有整数的列也有这些小数位(例如本例中的列
v2
),您可以执行一些操作,例如将 xyz
拆分为需要格式化的列和其他列:numbs2format <-
xyz[, (sapply(xyz, function(x) isTRUE(sum(x %% 1) > 0)))]
# ignore the warnings from trying to use %% on non-numerics
other.columns <-
xyz[, (sapply(xyz, function(x) !isTRUE(sum(x %% 1) > 0)))]
cbind(other.columns, format(numbs2format, digits=2, nsmall=2))
# v1 v2 v3 v4
#1 a 8200 365.21 0.31
#2 b 8100 365.21 0.33
关于r - 在 write.csv 中控制 R 中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30283454/