重命名列R.

时间:2018-03-09 23:45:21

标签: r dplyr subset tidy

我正在尝试重命名列,但我不知道该列是否存在于数据集中。我有一个大型数据集,如果存在某个列名,我想重命名它。例如:

A   B   C   D   E
1   4   5   9   2
3   5   6   9   1
4   4   4   9   1

newNames <- data %>% rename(1=A,2=B,3=C,4=D,5=E)

这可以重命名数据集中的内容,但我希望能够灵活地添加更多潜在的名称更改,而不会发生错误。

newNames2 <- data %>% rename(1=A,2=B,3=C,4=D,5=E,6=F,7=G)

这个^不起作用它给我一个错误,因为F和G不在数据集中。

如果名称不存在,是否有任何方法可以编写代码来忽略列更改? 谢谢!

1 个答案:

答案 0 :(得分:2)

可以有很多方法可以做到这一点。一种方法是创建一个带有名称及其相应的新名称的命名向量&#39; (作为向量的名称)并使用它,即

#The below vector v1, uses LETTERS as old names and 1:7 as the new ones
v1 <- setNames(LETTERS[1:7], 1:7)
names(df) <- names(v1)[v1 %in% names(df)]