【问题标题】:How can I get R to read a column of numbers in exponential notation?如何让 R 以指数表示法读取一列数字?
【发布时间】:2013-07-18 05:52:47
【问题描述】:

我第一次尝试使用 R 来制作直方图。我有一个文件,其中包含一列 100,000 个浮点数,大小从 8.85543e-07 到 1.15469e-03 不等。由于 'e' 符号,R 显然不会将它们识别为浮点数。我怎样才能让 R 阅读它们。谢谢!

【问题讨论】:

  • 您能否确保提供可重现的示例。有关详细信息,请参阅here。我无法重现您的问题。
  • R“不认识他们”是什么意思?它应该将这些值作为数值读入,例如:is.numeric(8.85543e-07) 返回TRUE。您如何阅读数据?
  • 我正在使用数据

标签: r statistics


【解决方案1】:

R 可以很好地读取这些数字;那里一定有另一个导致问题的值。

如果您使用read.table/read.csv/read.delim 读入数据,如果数据导入不正确,您始终可以将数据转换为数字。

x <- as.numeric(as.character(df$x))

其中df 是您的数据框的名称,x 是您想要的列。

【讨论】:

  • 谢谢 - 我已经尝试过那个数据
  • 使用as.numeric(data$x)。您想转换数据框中的列而不是数据框本身。
  • 我有一个类似的问题,然后 R 用科学计数法将值转换为 NA。
【解决方案2】:

像这样读取文件:

file_as_data_frame <- read.table("file.txt", colClasses="numeric")

【讨论】:

    【解决方案3】:

    我发现在 R 中阅读科学记数法的一个问题有时不是数字本身,而是数字之间的空白。

    您可以通过将文件中的一些科学记数法剪切并粘贴到文本编辑器并使用 C() 函数将数字括起来并用逗号分隔数字来测试这一点。如果 R 从 C() 函数中正确读取科学记数法,那么您的文件中有空格问题;如果不是,您可能在科学记数法实现方面存在特定于平台的问题(罕见且不太可能,但可能)。

    如果您遇到“空白问题”, 检查您的“delim =”参数到 Read.Table()。

    注意:

        delim = " "  # one space
        delim = ""   # no space
        delim = "/t" # escape sequence for tab
    

    所有人都以不同的方式处理空白。可能需要反复试验才能确定哪个适用于您的文件。

    【讨论】:

      【解决方案4】:

      您可以将 read.tables 的 colClasses 参数设置为“字符”。这将导致以字符格式读取数据,这将保留科学记数法

      如果要对具有科学计数格式的列进行计算,则可以使用 as.numeric 将列从字符格式转换为数字格式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        • 2019-01-25
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多