【问题标题】:R | readLine | read file containing numbers only (separated by whitespace)右 |读线 |读取仅包含数字的文件(由空格分隔)
【发布时间】:2020-04-05 07:35:55
【问题描述】:

我正在读取一个文件,其中每一行都有用空格分隔的数字。

我正在使用以下命令

f <- file("stdin")

on.exit(close(f))

L <- strsplit(readLines(f), "\n")

T1 <- as.numeric(unlist(strsplit(L[[1]], split = "\\s"))) # to read line containing numbers separated by spaces.

在不使用任何外部库的情况下,有什么最佳方法吗?

【问题讨论】:

  • 你目前的方法有什么问题?
  • 对于每一行我需要将其转换为数字

标签: r numeric readline


【解决方案1】:

如果文件内容与其发布的描述相符,scan 将自动读取数字。

f <- file('test.txt', open = 'rt')
x <- scan(f)

阅读9条

close(f)

x
#[1] 1 2 3 4 5 6 7 8 9

文件test.txt

该文件是一个 Ubuntu 19.10 文本文件,行以 '\n' 结尾。数字之间用空格隔开,不一定只有一个空格。

1 2 3 4
5 6 
7  8 9

编辑

请注意,这也适用于非整数。我已经编辑了上面的文件以包含一个数字3.14

f <- file('test2.txt', open = 'rt')
x <- scan(f)

阅读9条

close(f)

x
#[1] 1.00 2.00 3.14 4.00 5.00 6.00 7.00 8.00 9.00

文件test2.txt

1 2 3.14 4
5 6 
7  8 9

【讨论】:

    【解决方案2】:

    简单地说,如果输入 CSV 中的每一行包含相同数量的术语,那么您可以只使用 read.csv

    f <- "path/to/your/input.csv"
    T1 <- read.csv(file=f, sep=" ")  # using space as a separator
    

    如果每一行可以包含可变数量的数字,那么您当前的方法是可以接受的。

    【讨论】:

    • @Gaurav 然后指定空格作为分隔符,使用sep 参数到read.csv
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2011-04-29
    • 1970-01-01
    相关资源
    最近更新 更多