重命名由当前名称引用的多个数据框列

问题描述:

我想重命名 large 数据框中的一些随机列,并且我想使用当前列名,而不是索引。如果我向数据中添加或删除列,则列索引可能会更改,因此我认为使用现有列名是更稳定的解决方案。
这就是我现在拥有的:

I want to rename some random columns of a large data frame and I want to use the current column names, not the indexes. Column indexes might change if I add or remove columns to the data, so I figure using the existing column names is a more stable solution. This is what I have now:

mydf = merge(df.1, df.2)
colnames(mydf)[which(colnames(mydf) == "MyName.1")] = "MyNewName"

我可以简化此代码,是原始的 merge()调用还是仅第二行? MyName.1 实际上是两个不同xts对象的xts 合并的结果。

Can I simplify this code, either the original merge() call or just the second line? "MyName.1" is actually the result of an xts merge of two different xts objects.

names(mydf)[names(mydf) == "MyName.1"] = "MyNewName" # 13 characters shorter. 

尽管,您最终可能希望替换向量。在这种情况下,请使用%in%代替 == 并将MyName.1设置为与MyNewName

Although, you may want to replace a vector eventually. In that case, use %in% instead of == and set MyName.1 as a vector of equal length to MyNewName