【发布时间】:2015-02-16 13:53:39
【问题描述】:
在 xts 时间序列或数据框的某些列中,我有一个特殊字符,例如 ~。这没有问题。然而,一些代码行将这些 ~ 替换为 .这是一个问题。例如 merge.xts 替换这些字符。我怎样才能避免这种情况?我目前的解决方法是在任何影响它们的操作之后再次重命名列名,但我希望有一个更简单的解决方案?
谢谢
【问题讨论】:
在 xts 时间序列或数据框的某些列中,我有一个特殊字符,例如 ~。这没有问题。然而,一些代码行将这些 ~ 替换为 .这是一个问题。例如 merge.xts 替换这些字符。我怎样才能避免这种情况?我目前的解决方法是在任何影响它们的操作之后再次重命名列名,但我希望有一个更简单的解决方案?
谢谢
【问题讨论】:
R 有时(经常)使用non-standard evaluation。例如lm() 函数使用类似于y ~ x + z 的公式,R 将其转换为model.frame。因此,如果您使用一些特殊字符,例如 ~,事情可能会变得一团糟。一个虚构的例子是名为+x 的变量,可以很容易地转换为add x to something。因此,最好不要在变量名称中使用特殊字符(最好只使用字母)。一些函数用无害的东西(如点)替换特殊字符,以尽量减少出错的风险,这正是您所描述的。
因此,解决方案是不要在变量名中使用此类字符,这是为了您自己。如果你真的必须这样做,那么我建议:(1) 替换名称中的特殊字符在做任何事情之前,(2) 做你的事情,(3) 将名称更改为初始名称。
【讨论】: