3
是否可以在write.csv
中修复数字精度(例如2个十进制数字)?如果是的话,在这种情况下是否可以存储没有.00
的整数? 谢谢!R - 具有固定精度的write.csv
是否可以在write.csv
中修复数字精度(例如2个十进制数字)?如果是的话,在这种情况下是否可以存储没有.00
的整数? 谢谢!R - 具有固定精度的write.csv
不在write.csv
或write.table
本身。从帮助文档(?write.table
):
在几乎所有情况下的数字量转换为 通过“‘scipen’”(见“选项”)选项管辖,但与“位数 内部等效= 15'。为了更好地控制,使用 “格式”来制作字符矩阵/数据帧,并在其上调用 'write.table'。
,你是什么更好做是格式化自己使用format
列(S),ALA:
set.seed(42)
df1 <- data.frame(x = runif(10), y = sample(10))
df1$x <- round(df1$x, digits = 2)
write.csv(df1, ...)
编辑:
对于漂亮的打印屏幕,只需使用options(digits = 2)
并再次转储data.frame。我猜你想漂亮地打印到CSV,所以......
使用以下功能:
dfDigits <- function(x, digits = 2) {
## x is a data.frame
for (col in colnames(x)[sapply(x, class) == 'numeric'])
x[,col] <- round(x[,col], digits = digits)
x
}
set.seed(42)
df1 <- data.frame(x=runif(5),y=sample(5))
head(df1)
## x y
## 1 0.9148060435 3
## 2 0.9370754133 5
## 3 0.2861395348 1
## 4 0.8304476261 2
## 5 0.6417455189 4
head(dfDigits(df1, 2))
## x y
## 1 0.91 3
## 2 0.94 5
## 3 0.29 1
## 4 0.83 2
## 5 0.64 4
感谢。是的,我知道这个选择。我应该更加明确 - 随着算法开发的进展,我为DF增加了新的列,并且对每个数字列使用明确的“数字”变得有点麻烦。希望那里只是一个DF的子程序,它可以将所有数字列转换为所需的精度(或格式)并保持其他类型的完整。 – 2015-03-30 17:58:35
你希望它隐含在'data.frame'中吗?这与你所问的完全不同(关于'write.csv')。所以,你问的是一个函数,它将* data.frame中的所有*数字列转换为特定的数字位数? – r2evans 2015-03-30 18:02:22
只写出“眼睛悦目”。不适用于操作。 – 2015-03-30 18:04:16