gpt4 book ai didi

readLines 在 purrr::map 中杀死 R

转载 作者:行者123 更新时间:2023-12-03 22:53:07 24 4
gpt4 key购买 nike

尝试使用 map (来自 purrr)执行 readLines(来自基础)时,我一直在控制台中丢失 session *。

*不要换行,R似乎没有运行任何东西

如果我输入文件路径向量:

paths <- c("a/file.csv", "a/nother_file.csv")

并尝试使用 map 和 readLines 将所有顶行取出,R 死了。
result <- map(paths, readLines(n = 1))

但如果我这样做:
result <- map(1:2, function(x) readLines(paths[x], n = 1))

有用。

我究竟做错了什么?

最佳答案

解决方法已经贴出来了。以下是您的情况的简要说明:

使用 purrr::map ,你应该给它传递一个函数。但是readLines(n = 1)不是函数,而是函数调用表达式。这是非常不同的:再举一个例子,sum是一个函数,sum(1 : 10)是一个函数调用表达式,计算结果为整数值 55。但是 sum ,就其本身而言,计算结果为……本身:一个可以被调用的函数(你不能调用 sum(1 : 10):它只是一个整数)。

当你写 readLine(n = 1) , 该函数在 map 时立即调用不是由 purrr 调用的在数据上,而是就其现状而言。如果您调用 readLines(n = 1),也会发生同样的情况直接使用,无需将其包装在 map(…) 中.

但这并没有杀死 R session 。相反,它告诉 readLines从指定为其默认值的文件中读取。查看函数的文档,我们看到:

readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,
encoding = "unknown", skipNul = FALSE)
con = stdin() — 默认情况下, readLines正在从标准输入读取。在交互式终端中,这会阻塞,直到标准输入(即交互式终端)发送“文件结束”指令为止。在大多数命令行上,您可以通过按组合键 Ctrl+D 来模拟这一点。在 RStudio 内部,行为可能会有所不同。

关于readLines 在 purrr::map 中杀死 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709869/

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