【问题标题】:Invalid Length Argument无效的长度参数
【发布时间】:2018-07-10 12:46:45
【问题描述】:

我想将我的数据框的所有列转换为数字格式。所以我使用 lapply

 data.frame(lapply(dat, numeric))

但这向我显示了 invalid length argument 错误。 但是,当我尝试使用单个列时它正在工作。

 lapply(dat$x.Type, numeric)

但是我又想知道如何用这个更新原始数据框。

我猜我的问题的解决方案是运行一个循环,将 lapply 应用于所有列。 问题是我无法弄清楚如何做到这一点。

有人可以帮我吗?

【问题讨论】:

    标签: r dataframe data-science sapply


    【解决方案1】:

    尝试使用as.numeric 而不是numeric

    dat <- as.data.frame(lapply(dat, as.numeric))
    

    【讨论】:

    • 它工作了谢谢。你能更详细地解释一下吗?我的意思是这里 [as.data.frame] 和 [data.frame] 之间的区别是什么?
    • @AdhirajChattopadhyay 这里as.data.framedata.frame 之间没有实际区别。后者构造一个新的data.frame,在这种情况下,通过使用作为参数传递的数据结构,而前者将给定的数据结构强制转换为data.frame。因此,在这种情况下,语义上我更喜欢as.data.structure
    • as.numeric 和 numeric 有什么区别?
    • numeric 用于声明变量的类型。具体来说,它创建了一个double 类型的指定长度的新向量。与此相反,as.numeric 将现有数据强制转换为数字形式,即将其转换为 double。如果它有帮助,在其他编程语言中,像as.numeric 所做的那样的强制/转换称为“类型转换”。
    【解决方案2】:

    如果您已经有一个现有的数据框,另一个不错的选择:

    library(dplyr)
    dat <- dat %>% mutate_all(as.numeric)
    

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-29
      • 2014-03-01
      • 2016-06-09
      相关资源
      最近更新 更多