为什么 write.csv 和 read.csv 不一致? [关闭]

2023-12-29

问题很简单,考虑下面的例子:

m <- head(iris)
write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv')

这样做的结果是m1与原始对象不同m因为它有一个名为“X”的新第一列。如果我真的想让它们相等,我必须使用额外的参数,就像这两个例子一样:

write.csv(m, file = 'm.csv', row.names = FALSE)
# and then
m1 <- read.csv('m.csv')

or

write.csv(m, file = 'm.csv')
m1 <- read.csv('m.csv', row.names = 1)

问题是,造成这种差异的原因是什么?特别是,为什么如果write.csv and read.csv据说是为了遵守 Excel 约定,但不导入最初导出的同一对象?对我来说,这是一种非常违反直觉的行为,非常不可取。

(如果我使用这些函数的 csv2 变体,结果会完全相同)

提前致谢!


这些是数据框m and m1如果您不想使用 R 来查看示例:

> m
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

> m1
  X Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 1          5.1         3.5          1.4         0.2  setosa
2 2          4.9         3.0          1.4         0.2  setosa
3 3          4.7         3.2          1.3         0.2  setosa
4 4          4.6         3.1          1.5         0.2  setosa
5 5          5.0         3.6          1.4         0.2  setosa
6 6          5.4         3.9          1.7         0.4  setosa

这是我的猜测...

write.table将 data.frame 写入文件,并且 data.frames 始终具有行名称,因此默认情况下不写入行名称将丢弃信息。 (是的,write.table还将编写一个矩阵,并且矩阵不必具有行名称,但 data.frames 可能比矩阵使用得更频繁。)

read.table返回 data.frame 但 CSV 文件没有任何行名称的概念,因此有人可能会认为默认情况下假设 CSV 的第一列是行名称是违反直觉的。

现在可能有一种方法可以使这两个函数保持一致,但我认为写入文本文件并不是将数据从一个 R 会话输出/输入到另一个 R 会话的最佳方法。使用起来更安全/更快save, load, saveRDS, readRDS, etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 write.csv 和 read.csv 不一致? [关闭] 的相关文章

随机推荐

  • 过滤字符串列表,忽略其他项目的子字符串

    如何过滤包含字符串和子字符串的列表以仅返回最长的字符串 如果列表中的任何项目是另一个项目的子字符串 则仅返回较长的字符串 我有这个功能 有更快的方法吗 def filterSublist lst uniq lst for elem in l
  • WPF 和 3D 如何更改 3D 空间中的单个位置点?

    我在 WPF 中定义了一个非常简单的 3D 空间 它定义了一个 3D 矩形 我希望能够操作 MeshGeometry3D 上的每个 Point3D 对象 在 位置 中 属性 但我遇到了麻烦 这是我的 XAML
  • 具有多个项目的标题模板

    我正在尝试写一个HeaderTemplate对于扩展器 到目前为止 我注意到所有示例都使用 Binding 关键字从标题中获取数据 但是 如果 Header 中有多个控件会发生什么情况 如何指定应将这些控件插入到特定位置
  • 处理 Swing UI 中的异常(低级到高级以及异常包装)

    我希望在 Swing 应用程序中以有意义的方式处理异常 下面是里面的一个actionPerformed方法 这UiUtils showError显示一个 JOptionPane 其中带有一个显示 隐藏堆栈跟踪的按钮 ApplicationE
  • 一个简单的代码来快速检测任何信标

    我是快速编程的新手 我正在尝试开发检测信标的应用程序 但仍然无法检测到任何信标 let region CLBeaconRegion proximityUUID NSUUID UUIDString 11111111 1111 1111 111
  • Azure SDK、Trace.Information 和 WADLogsTable

    我正在使用 Azure SDK 2 5 在 NET 中编写新的云服务 我知道诊断发生了一些重大变化使用 2 5 SDK rekesae https msdn microsoft com en us library azure dn87397
  • 学习如何编写它们的示例解析器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在寻找可以研究的解析器和 或解析器生成器的源代码 以便进一步发展我在学校课程中获得的技能 您知道任何类型的值得推荐的解析器吗 您应
  • PHP 文件形式的图像

    我对 PHP 相当陌生 我需要知道如何将文件显示为图像 例如 打开http example com script php http example com script php将显示图像 我的理由是我需要把它放在src的属性 img 我希望
  • 获取 Unicode 字符中字符串的“实际”长度

    给定一个像 xe2 x9c xae 例如 可以是其他类似 or 我想找到字符打印在屏幕上时的 实际 长度 例如 len len xe2 x9c xae 两者都返回 3 但它应该是 1 你可以这样尝试 unicodedata normaliz
  • 在 Python 中编译正则表达式

    我正在阅读 Doug Hellman 的 Python 标准库示例 并发现了这一点 1 3 2 编译表达式 re 包含用于将正则表达式作为文本字符串处理的模块级函数 但更有效的是compile程序经常使用的表达式 我无法理解他对为什么会出现
  • 当单选按钮在 Jquery mobile 中处于活动状态时,单选按钮上有不同的颜色

    我有三个单选按钮 它们在 jquery 中具有相同的主题 如果我选择其中之一 按钮的颜色将更改为 css 中的 ui btn active 类中指定的颜色 我的单选按钮名为 可以见面 不确定 和 拒绝 我希望 拒绝 单选按钮在被选中时具有与
  • 将整个页面替换为 ajax 加载页面的内容

    我正在使用 JQuery 并且试图找到一种用 ajax 加载的内容替换整个页面的方法 我找到了建议如何从加载页面执行此操作的答案 但如果可能的话 我想从加载页面执行此操作 我有一个使用大量 ajax 调用的网络应用程序 问题是 如果用户在这
  • 高斯曲线拟合算法

    各位 我一直在尝试获得一些数据集的高斯拟合 这些数据集在某种程度上看起来像扭曲的正态分布 我一直在使用软件来做到这一点 我想知道是否可以应用迭代算法将这些数据集转换为高斯拟合曲线 原始曲线的标准差和平均值作为输入 有任何想法吗 计算数据的平
  • 查找未设置该属性的Neo4j节点

    使用Cypher 如何找到不存在属性的节点 例如我有两个节点 A foo true name A B name B 现在我想找B 在没有的基础上选择它foo属性集 我怎样才能做到这一点 正如迈克尔 饥饿提到的 MATCH n WHERE N
  • HTTP 中的“406-不可接受的响应”是什么?

    在我的 Ruby on Rails 应用程序中 我尝试通过 POSTMAN 上传图像REST http en wikipedia org wiki Representational State Transfer客户在Base64 http
  • 为什么在 docker 中拉取镜像时出现此错误

    我尝试使用以下方法提取图像 docker pull ghcr io linuxserver nextcloud latest 但我收到此错误消息 来自守护进程的错误响应 获取 https ghcr io v2 拨打 tcp 在 1 53 上
  • 将条纹样式添加到项目列表

    使用 KnockoutJS 对列表进行条带化的最佳方法是什么 下面的 div 上的类应该是偶数或奇数 具体取决于它在列表中的位置 并在添加或删除项目时更新 div class Headlines loader div
  • Xamarin 的 Genymotion Android 模拟器

    我在使用 Genymotion Android 模拟器进行 xamarin 开发时遇到问题 我已经安装了 Genymotion 桌面应用程序和其中的几个 Android 设备 每当我通过 Genymotion 桌面应用程序运行任何已安装的设
  • 原型混乱:父原型属性受子原型影响

    我正在读一本关于 OOP javascript 的书 并被其中一个示例困住了 在示例代码的第一个版本中 一个新实例Shape构造函数被创建并且toString方法被调用 这toString方法返回 三角形 这是name的财产Triangle
  • 为什么 write.csv 和 read.csv 不一致? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi