我犯了一个错误并写下了以下内容:
library(tidyverse)
list(x = rnorm(10)) %>% save(file = "test.RData")
而不是这样:
x <- list(x = rnorm(10))
save(x, file = "test.RData")
因此我无法读回“test.RData”
load("test.RData")
ls()
character(0)
然而“.RData”文件似乎包含一些内容,因为以下命令创建了一个 73 MB 的文件,而只有 10 个值的文件大小为 77 B。根本无法读回。
list(x = rnorm(10000000)) %>% save(file = "test.RData")
有趣的是,基本 r 管道|>
会引发错误
list(x = rnorm(10)) |> save(file = "test.RData")
Error in save(list(x = rnorm(10)), file = "test.RData") :
object ‘list(x = rnorm(10))’ not found
这个错误很容易修复,我不会再犯,但我想知道背后到底发生了什么:
- 为什么在传递无名对象时 save() 不会引发错误
%>%
? - 有没有办法加载这样编写的.RData 文件?
.
实际上,它是作为管道创建的名称(点)加载的%>%
。它相当于以下明确显示名称的代码:另一方面,基础管道
|>
不会创建新名称,如果使用新名称会导致错误。它通过将左侧替换为右侧来工作,而不会创建新名称,因此相当于以下错误:注意
名称不出现的原因是,
ls
除非称为还要注意的是,
load
它返回一个包含名称的字符向量,因此获取名称的另一种方法是Names
查看