【问题标题】:Apply data frames to changing names in for loop将数据框应用于 for 循环中的更改名称
【发布时间】:2020-10-20 14:24:30
【问题描述】:
for(i in 1:length(file.list)){
 
 assign(paste("order_", i, sep = ""),i)  <- Data_cleaner(file.list[i])
 
}
}

我正在尝试应用数据框来获取新命名的单独数据框,以便之后我可以完全加入它们,并且我制作的功能确实可以独立工作,但我不断收到此错误。

Error in assign(paste("order_", i, sep = ""), i) &lt;- Data_cleaner(file.list[i]) : target of assignment expands to non-language object

file.list 是一个包含一些文本文件的文件,Data_cleaner() 将其转换为文本到数据帧中,现在我需要将其应用于file.list 中的每个 txt 文件。

我们将不胜感激。

【问题讨论】:

    标签: r dataframe for-loop


    【解决方案1】:

    assign已经创建了一个变量(名称由第一个参数定义,内容由第二个参数定义),你不需要使用&lt;-,你可以只写:

    for(i in file.list){
        assign(paste("a", i, sep = ""), Data_cleaner(file.list[i]))}
    

    但也许有更好的方法来“完全加入他们”,如果你的意思是他们有相同的列并且你想合并他们的观察,你可以简单地这样做:

    df = data.frame()
    for(i in file.list){
        df = rbind(df, Data_cleaner(file.list[i]))}
    

    如果这不是你加入他们的意思,请告诉我是什么,我可以尝试调整它。

    【讨论】:

    • Error: file must be a string, raw vector or a connection. Data cleaner 输出一个数据框
    • 我编辑了它,看看它是否有效。如果可以,请尝试发布部分数据(请参阅?dput)以便我们可以运行代码(如果它太大,只发布第一行,或者只发布列表的一部分)
    • 好的,所以Data_cleaner 需要一些文本并将其转换为数据框,所有行都不同,因为不是每个人都订购相同的项目,但所有列都是相同的。
    • 而您只是想将这几个数据框(位于file.list)转换为一个包含所有这些行的大型数据框?如果是,那么第二个代码应该更有效地解决您的问题。
    【解决方案2】:

    通过避免 for 循环并使用 purrr 包中的 map 来解决此问题

    【讨论】:

      猜你喜欢
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多