【问题标题】:Loading someone else's .rdata file, can't access the data加载别人的 .rdata 文件,无法访问数据
【发布时间】:2011-02-16 19:22:29
【问题描述】:

我的教授给我发了一个 .rdata 文件,希望我对内容进行一些分析。虽然我在 R 方面表现不错,但我从未将我的工作保存在 .rdata 文件中,因此也从未使用过它们。

当我尝试加载文件时,它看起来正在工作:

> load('/home/swansone/Desktop/anes.rdata')
> ls()
[1] "25383-0001-Data"

但我似乎无法获取数据:

> names("25383-0001-Data")
NULL

我知道 .rdata 文件中有数据(它是 13 MB,里面肯定有很多)我做错了什么吗?我很茫然。

编辑:

我应该注意,我也尝试过不使用引号:

> names(25383-0001-Data)
Error: object "Data" not found

并重命名:

> ls()[1] <- 'nes'
Error in ls()[1] <- "nes" : invalid (NULL) left side of assignment

【问题讨论】:

  • 我试过没有引号,见编辑。
  • 你也可以使用get:aReasonableName

标签: r load


【解决方案1】:

如果对象不是以字母或 .和一封信(如An Introduction to R 中所述)。

使用反引号访问此对象(help("`") 的“名称和标识符”部分解释了为什么这样做)并将该对象分配给一个新的、语法上有效命名的对象。

Data <- `25383-0001-Data`

【讨论】:

  • 好吧,I 绝不会像我读过介绍那样命名变量。不幸的是,这不是我的数据,而且 An Introduction to R 没有提到使用反引号。感谢您的回复。
  • @Wilduck:我并不打算暗示您以这种方式命名变量。我还链接到手册作为参考,而不是建议您没有阅读它。干杯。
  • 没有难过的感觉,我真的很欣赏你的回应。我想我发表评论的原因与您包含链接的原因相同。对于碰巧阅读此页面的其他任何人:)。
【解决方案2】:

也许这与名称中不寻常地使用破折号和反引号有关:

names(`25383-0001-Data`)

编辑:

更多供参考(因为 Joshua 已经完美地回答了主要问题),您还可以使用 get() 重新分配来自 ls() 的对象(Wilduck 在问题中尝试的内容)。如果名称的对象包含非常奇怪的字符,这可能很有用:

foo <- 1:5
bar <- get(ls()[1])
bar
[1] 1 2 3 4 5

这当然要求ls()中的foo的索引为[1],但是查找所需对象的索引并不太难。

【讨论】:

  • 不仅仅是破折号。名称应以字母或. 和字母开头,并且只能包含字母._
  • 啊,当然。回首过去,它实际上是非常合乎逻辑的,为什么没有反引号它就无法工作。有趣的是,如果您认为 - 符号是一个字符中的破折号而不是减号,那么您如何将其读取为一个对象名称 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多