dplyr重命名命令中包含空格

4

我尝试了多种dplyr中的重命名函数变体。 我有一个称为alldata的数据库中的数据框,并且在数据框中有一个名为WindDirection:N的列。 我正在尝试将其重命名为Wind Direction。 我明白创建包含空格的变量名不是一个好习惯,但我希望它被命名为这样可以提高在shiny中selectInput列表的可读性,即使我只改为将其重命名为WindDirection,我仍会收到相同的错误消息。

rename(alldata, Wind Direction = WindDirection:N)

这会产生以下错误信息:

错误:在“rename(alldata,Wind Direction”中出现意外符号

rename(alldata, `Wind Direction` = `WindDirection:N`)

这不会返回错误信息,但也不会重命名变量。

rename(alldata, "Wind Direction" = "WindDirection:N")

出现了如下错误信息:

错误:重命名参数必须是未引用的变量名称。Wind Direction 参数不是如此。

接着我尝试按照相反的顺序进行同样的3次组合(因为我知道plyr是如何工作的,即使我没有在代码之前使用library命令调用它)将旧变量放在第一位,新变量放在第二位,但是还是得到了类似的错误信息。

然后我尝试像下面的示例一样指定包,并再次尝试了所有6个组合。

dplyr::rename(alldata, `Wind Direction` = `WindDirection:N`)

出现了与第一次类似的错误信息。

我曾试图使用以下线程来自己解决问题。 dplyr中“rename”命令的替代方法


6
使用反引号(backticks)。 rename(\Wind Direction` = WindDirection)` 的意思是使用反引号将"Wind Direction"重新命名为"WindDirection"。 - eipi10
@eipi10 我已经尝试过了,代码在控制台中显示了整个数据框,但没有重命名变量。 - User247365
1
好的,这是因为你必须分配新的数据框 alldata <- rename(alldata,... 这就是 dplyr 的工作方式。 - agenis
names(alldata)[names(alldata)=="Wind Direction"] <- "WindDirection" - ytk
谢谢@agenis,这个可行。 - User247365
只是为了扩展一下 @eipi10 的评论,请参考 ?Quotes:“这些标识符也被称为语法名称,并且可以直接在 R 代码中使用。几乎总是可以使用其他名称,只要它们被引用。首选的引号是反引号(‘⁠`⁠’),deparse 通常会使用它。” - undefined
1个回答

2

正如agenis所指出的那样,我的错误在于重命名变量后没有重新定义数据框。

所以我应该这样做:

alldata <- dplyr::rename(alldata,Wind Direction=WindDirection:N)

而不是这样:

dplyr::rename(alldata,Wind Direction=WindDirection:N)


1
这不是使用带空格名称的正确方式。 - kraggle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接