【问题标题】:changing column types across multiple tables and columns in R [duplicate]在 R 中跨多个表和列更改列类型 [重复]
【发布时间】:2018-10-17 16:02:46
【问题描述】:

我有几个共享相同列名的数据框。比如……

a,b,c 列的数据框 A
c,d,e 列的数据框 B
a,b,c,d 列的数据框 C

我想将名为“b”和“c”的列转换为字符(如果这些列存在于表中)。我能做到这一点而不像这样重复吗

A$b <-as.character(A$b)
A$c <-as.character(A$c) 
B$b <-as.character(B$c)

【问题讨论】:

    标签: r for-loop type-conversion iteration column-types


    【解决方案1】:
    charnames <- c('a','b','c','d','e')
    
    indA <- colnames(A) %in% charnames
    A[indA] <- lapply(A[indA], as.character)
    
    indB <- colnames(B) %in% charnames
    B[indB] <- lapply(B[indB], as.character)
    
    # ...
    

    这样可以确保如果没有匹配的列名,则框架不会被修改。

    如果您询问的自动化程度远不止于此,那么我建议您将框架组织成远离单个变量,而不是作为list-of-data.frames

    这个例子:

    lst <- list(indA, indB)
    lst <- lapply(lst, function(df) {
      ind <- colnames(df) %in% charnames
      df[ind] <- lapply(df[ind], as.character)
      df
    })
    

    【讨论】:

    • 谢谢!这非常有帮助,是的,我希望进一步自动化它,这样我就不必复制和粘贴上面的脚本了。我定义了我的数据框列表并将其用作循环函数中的变量。它对我来说不太有效。你能提供更多关于如何做到这一点的指南吗?再次感谢!
    • 查看我的编辑,希望对您有所帮助。
    猜你喜欢
    • 2018-12-24
    • 1970-01-01
    • 2013-09-27
    • 2014-06-07
    • 2021-12-01
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多