【发布时间】:2023-02-04 02:14:58
【问题描述】:
我有一个必须具有特定布局的数据框。有没有办法让 R 拒绝我尝试更改列数或名称的任何命令?
手动检查数据表的格式很容易,但我没有找到让 R 在每次执行一段代码时自动为我做的方法。
问候
【问题讨论】:
-
这是一个有点奇怪的要求。为什么要运行可能会在未经您许可的情况下更改列的名称/编号的代码?最明智的做法是制作数据框的副本。例如,如果您的数据框名为
df,则只需执行df_backup <- df。如果您以某种方式搞砸了数据框,请使用df <- df_backup恢复原始的df。我可以想到其他方法,但这确实是最简单的。 -
想到的两个半生不熟的想法是:(1)将您的数据保存在具有锁定列的远程数据库中,并使用 DBI、dbplyr 等进行操作;或 (2) 使用只允许对数据进行允许更改的方法的 R6 对象。注意,我缺乏数据库管理或 R6 的知识,不知道这两者是否真的可行。
-
使用 data.table,也许可以试试:
setattr(DT, '.data.table.locked', TRUE),见stackoverflow.com/q/44995065/680068 -
对于@AllanCameron 关于创建
df_backup的评论,请注意,如果您的对象属于data.table类,那么您需要显式copy(df)。作为原因的示例,请尝试:A <- data.table(a=1:2); B <- A; A[,b:=3:4],并注意B有列b;这将 Allan 的评论修改为df_backup <- copy(df)。 -
请提供足够的代码,以便其他人可以更好地理解或重现问题。
标签: r data.table format