【发布时间】:2019-03-20 20:37:32
【问题描述】:
我有一个 data.frame,irv,有一个感兴趣的列。 class(irv) 返回“data.frame”。
is.recursive(irv) 返回TRUE,is.atomic(irv) 返回FALSE。在控制台中,irv$x 返回感兴趣的列。 max(irv$x) 也返回适当的最大值。
在绘图调用中,我尝试使用此列的最大值设置 xlim,所以我有
plot(y~x,data = subsetirv,xlab = '', ylab = '', ylim = c(0,20),
xlim = c(0, max(irv$x)),
cex = 0.5, pch = 19)
这些都是我的所有论点,以防出现一些奇怪的论点交互
然而每次它抛出以下错误:
Error in irv$x : $ operator is invalid for atomic vectors
当其他所有东西都声称它是一个数据框时,为什么 plot() 调用会认为 irv 是原子的?
通常我会尝试提供可重现的数据,但除了使用我的实际数据之外,我无法重现问题,而且我不确定如何以合理的方式共享真实数据。
是否有一些我没有想到的奇怪互动?
顺便说一句,正在绘制的数据是 irv 的一个子集,如果这很重要的话。
-edit- 我刚刚尝试的是将数据框保存为不同的对象名称。它最初名为irv,我保存到一个名为testdf 的新对象中。这解决了这个问题。 irv 在 plot 或 max 函数环境中是什么东西?名字显然是个问题,但我不知道为什么。
-edit2- 建议后,这里是dput(head(irv)) 输出的pastebin:pastebin 这里是str(irv) 的输出:
'data.frame': 16198 obs. of 17 variables:
$ reader : chr "MG" "MG" "MG" "MG" ...
$ read : int 1 1 1 1 1 1 1 1 1 1 ...
$ age : num 2 3 4 5 6 7 8 9 10 11 ...
$ fishid : Factor w/ 2118 levels "2010_TNS_0135",..: 7 7 7 7 7 7 7 7 7 7 ...
$ otorad : num 6.15 9.52 13.47 17.32 22.28 ...
$ year : chr "2010" "2010" "2010" "2010" ...
$ readid : chr "2010_TNS_0153_MG_1" "2010_TNS_0153_MG_1" "2010_TNS_0153_MG_1" "2010_TNS_0153_MG_1" ...
$ incwidth : num 3.94 3.37 3.94 3.85 4.96 ...
$ profflag : chr "good" "good" "good" "good" ...
$ median : num 3.85 3.82 3.78 3.77 3.78 ...
$ upper75prob: num 4.44 4.19 3.94 3.94 4.03 ...
$ lower25prob: num 3.58 3.65 3.67 3.5 3.56 ...
$ IQR : num 0.859 0.543 0.269 0.437 0.465 ...
$ diff_flag : num 0.0954 -0.8162 0.6171 0.1933 2.5376 ...
$ roll_flag : chr "good" "good" "good" "good" ...
$ irv : num 3.936 -0.563 0.571 -0.09 1.104 ...
$ irvf : chr "good" "good" "good" "good" ...
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。我对编辑感到困惑,当变量在您的代码中命名为
df或者是irv时,问题是什么?从你的描述来看,这听起来像是一个错字。 -
就像我说的,除了我的真实数据,我无法重现问题,并且不知道共享真实数据的好/简单的方法。我自始至终都称它为 df,因为我不认为/不知道实际名称很重要,并且我试图以尽可能简单的方式解释问题,并且我认为真实的对象名称只会不必要地使文本混乱。但是,当我尝试更改名称时,我意识到名称显然很重要,并且问题仅在对象被称为
irv时才出现。我会更新以反映这一点 -
您可以使用
dput(head(irv))分享部分数据。同样重要的是要分享str(irv)的输出 -
@Brian 编辑以根据要求添加这些内容。