【发布时间】:2020-09-11 21:21:40
【问题描述】:
我正在尝试为 Sys.Date() 的输出分配一些内容。例如,假设我想用今天的日期命名对象:
format(Sys.Date(), "%b%d") <- mtcars
我得到了错误:
赋值左侧无效 (NULL)。
我试过了:eval(parse(text = format(Sys.Date(), "%b%d"))) <- mtcars
获取相同的错误消息。我错过了什么/有解决方案吗?
【问题讨论】:
-
为什么要这样做?在 R 中,将数据存储在变量名本身通常是一个坏主意。如果您需要动态生成名称以使用命名列表并避免使用
eval()和assign()函数会更好,因为它们会产生不必要的开销。 -
我基本上是在为我正在处理的数据帧添加时间戳——我现在手动命名它们,如果我想运行的假设越多,这就会变得乏味。我可以看到将它们保存在一个列表中的价值,一个更少的混乱,但我如何将一个新元素添加到列表中的动态命名槽?我有包含元素 Sep03 和 Sep09 的列表 x - 如何将动态命名的元素 Sep11 添加到 x?
-
您可以分配任何字符串值,例如
x[["Sep11"]] <- mtcars或返回字符串值x[[format(Sys.Date(), "%b%d")]] <- mtcars的函数。然后你将把所有值很好地存储在x中,你可以使用x[["Sep11"]]或x$Sep11获取它们,甚至可以对列表中的每个元素应用一个函数。 -
@MrFlick 分配给命名列表中的函数输出有效,我看到自己正在使用它。然而,我的问题是关于在全球环境中分配,所以我将把 akrun 作为接受的答案。将其作为单独的答案提供给其他人查找?猜测 SO 将加权答案而不是 cmets。
标签: r