如何让R读取指数符号表示的数字列?

7

我第一次尝试使用R制作直方图。 我有一个文件,其中包含一列大小范围从8.85543e-07到1.15469e-03的100,000个浮点数。 由于'e'记法,R显然无法识别它们为浮点数。 我该如何让R读取它们呢?谢谢!


请确保您提供一个可重现的示例。请参阅此处获取更多详细信息。我无法重现您的问题。 - mnel
你说的R“不认识它们”是什么意思?它应该将这些值作为数字值读入,例如:is.numeric(8.85543e-07) 返回 TRUE。你是如何读取数据的? - thelatemail
我正在使用 data <- read.table 读取文件。我在文件中没有看到任何非数字值。 - user2594096
4个回答

8

R可以很好地读取这些数字;必须有另一个值导致了问题。

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

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

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


谢谢 - 我已经尝试过了data <- as.numeric(data) 错误:(列表)对象无法强制转换为类型“double” - user2594096
1
使用 as.numeric(data$x)。你想要将数据框中的一列转换为数字,而不是整个数据框本身。 - Hong Ooi
1
我有一个类似的问题,然后 R 将科学计数法的值转换为 NA。 - Anastasia Pupynina

3

像这样读取文件:

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

0
您可以将read.tables的colClasses参数设置为"character"。这将导致以字符格式读取数据,从而保留科学计数法
如果您想对具有科学计数法格式的列执行计算,则可以使用as.numeric将该列从字符格式转换为数值格式

0

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

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

如果您有“空格问题”,请检查Read.Table()中的“delim =”参数。

请注意:

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

所有的程序都会以不同的方式处理空格。可能需要尝试几次才能确定哪个适用于您的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接