gpt4 book ai didi

string - 如何读取空格分隔的字符串直到 R 中的 EOF

转载 作者:行者123 更新时间:2023-12-01 11:04:35 25 4
gpt4 key购买 nike

我是 R 的新手,在遇到 EOF 之前,我目前无法读取一系列字符串。我不仅不知道如何检测 EOF,而且我也不知道如何读取由空格分隔的单个字符串,这对于我目前所见的任何其他语言来说都是微不足道的。在 C 中,我会简单地做:

while (scanf("%s", s) == 1) { /* do something with s */ }

如果可能的话,我更喜欢不需要提前知道字符串最大长度的解决方案。

有什么想法吗?

编辑:我正在寻找不将所有输入存储到内存中的解决方案,而是与上面的 C 代码等效或至少相似的解决方案。

最佳答案

这是一种一次读取一个项目的方法...它利用了 scan 有一个 nmax 参数(和 nnlines - 它实际上有点乱!)。

# First create a sample file to read from...
writeLines(c("Hello world", "and now", "Goodbye"), "foo.txt")

# Use a file connection to read from...
f <- file("foo.txt", "r")

i <- 0L
repeat {
s <- scan(f, "", nmax=1, quiet=TRUE)
if (length(s) == 0) break
i <- i + 1L
cat("Read item #", i, ": ", s, "\n", sep="")
}
close(f)

当扫描遇到 EOF 时,它返回一个零长度向量。因此,一种更晦涩但类似于 C 的方式是:

while (length(s <- scan(f, "", nmax=1, quiet=TRUE))) {
i <- i + 1L
cat("Read item #", i, ": ", s, "\n", sep="")
}

在任何情况下,输出都是:

Read item #1: Hello
Read item #2: world
Read item #3: and
Read item #4: now
Read item #5: Goodbye

最后,如果您可以向量化您对字符串所做的操作,您可能应该尝试一次读取一堆它们 - 只需将 nmax 更改为,比如说,10000.

关于string - 如何读取空格分隔的字符串直到 R 中的 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com