【问题标题】:Rename columns in a dataframe the same name as list elements in R将数据框中的列重命名为与 R 中的列表元素相同的名称
【发布时间】:2016-11-09 20:58:52
【问题描述】:

我有很多文件名 ["fname1","fname2",..."fname50"]。

我想更改我正在使用的数据框的列名以匹配文件名。例如,column1 的名称应更改为 fname1,column2 的名称应更改为 fname2,依此类推。实际的列名是 cbind 的结果,并且很长/很乱,所以它不仅仅是一个单词替换或任何东西。

我可以一次性做到这一点

>names(df)[1]<-filenames[1]

但是,我无法在循环中完成这项工作。

>for(i in df){names(df)[i]<-filenames[i]}
>error msg: 'names' attribute [39] must be the same length as the vector [5]

我通常在 Python 中工作,并且可能在 R 中错误地处理循环。我会很感激提示和技巧。谢谢!

在伪 Python 中,我正在寻找的是:

    for i in df-colnames:
        df-colnames[i] = filenames[i]

【问题讨论】:

  • 只需names(df) &lt;- filenames
  • 即使在 Python pandas 中,您也可以避免循环,因为列是列表:df.columns = filenames

标签: r


【解决方案1】:

不管是列表还是向量,你都可以这样做

names(df) = filenames

【讨论】:

  • @HubertL 很抱歉,我在你之后 2 到 3 分钟才发帖,但那是因为我同时在研究其他内容。我开始打字时没有评论。
  • 正如 HubertL 上面评论的那样,这是最简单的方法。谢谢大家,这解决了我的问题。感谢您的帮助。
【解决方案2】:

试试

for (i in 1:ncol(df){
names(df[,i]) = filenames[i]}

【讨论】:

  • 如其他答案所示,此处可以避免循环
  • 确实如此。出于某种原因,我假设列数可能并不总是等于文件名数。
【解决方案3】:

(代表 OP 发布)

解决办法:

names(df)<-filesnames 

感谢所有评论的人。这行得通。

【讨论】:

  • @suren:您想编辑一些答案是值得称赞的,我非常欢迎对我的任何材料进行有用的编辑。但是,您在其中添加了一个语法错误,而且这不是我们认为是实质性的编辑——我们想要改进,而不是为了它们而进行编辑。那里写得不好和格式错误的帖子的数量是天文数字,所以首先解决这些问题可能是值得的!
  • @suren:in this answer你添加了两个错误:另一个语法错误,标点符号后面需要一个空格。
  • 请不要难过。我来这里是为了提高你的写作技巧。所以它会帮助你。
  • @suren:在这种情况下,我会请版主查看您的编辑。此处不欢迎出于恶意或报复动机的编辑。
  • 请更正那些我将再次审查并尝试更正的内容。
猜你喜欢
  • 2021-03-18
  • 2018-12-21
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2019-06-24
相关资源
最近更新 更多