我有一个数据框,其中包含大部分列为数字。然后我用这个命令写入csv文件
df = read.csv("mydf.csv", header = F, sep = ",", stringsAsFactors=F,dec=".")
后来我用文件读取了文件:
sapply(df, class)
然后我使用
检查数据格式 private string encryptData(string data)
{
byte[] encKey = ASCIIEncoding.UTF8.GetBytes("pemgail9uzpgzl88");
Rijndael aes = Rijndael.Create();
aes.KeySize = 256;
aes.BlockSize = 256;
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
aes.Key = encKey;
ICryptoTransform crypto = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] txt = ASCIIEncoding.UTF8.GetBytes(data);
byte[] cipherText = crypto.TransformFinalBlock(txt, 0, txt.Length);
return Convert.ToBase64String(cipherText) + "&iv=" + Convert.ToBase64String(aes.IV);
}
所有列都变为字符。如果我不把stringsAsFactors = F, 所有列都变成了因子。 我可以稍后手动将列更改为数字。我只是想知道是否有一种方法可以在写入或读取csv文件时至少为大多数列保留数据格式。有更好的解决方案吗?
答案 0 :(得分:2)
默认情况下,write.csv
会包含标题,但是当您导入它们时,您会告诉R没有标题。这些标题可能是非数字的,会触发切换到字符。因此,要么关闭write.csv()
中的标题,要么设置header=TRUE
read.csv()