【问题标题】:Object not found error找不到对象错误
【发布时间】:2015-06-02 14:50:54
【问题描述】:

首先我需要解释一下,我在 R 方面接受过最低限度的培训,并且对编码语言或 R 等程序的了解为 0,所以如果我提出愚蠢的问题或不了解基本知识,请见谅。

另外,我试图查看过去的主题/答案,但我很难将答案与我的数据联系起来,所以如果这个问题已经得到解答,我深表歉意。

基本上我有一个数据集,我试图在这个集合中找到两个变量的平均值(在寒冷中行走之前的峰值流量,以及在寒冷中行走之后的峰值流量)。这是我到目前为止使用的全部代码:

 drugs <- read.table(file = "C:\\Users\\Becky\\My Documents\\Asthmadata.txt", header = TRUE)

 drugs
 str(drugs)

 mean.Asthmadata <- tapply (Asthmadata$trial1, list(Asthmadata$PEFR1), mean)
 mean.Asthmadata

在 mean.Asthmadata 之前它工作正常。数据在 R 中与其他代码一起出现得很好,但是当我达到平均值并执行 mean.Asthmadata [...] 代码时,我不断收到相同的错误:“找不到对象'mean.Asthmadata'”

我的朋友使用了与我相同的代码,并且对他有用,所以我很困惑。难道我做错了什么?

谢谢

编辑: @BenBolker

这是我的数据集

trial1  PEFR1   trial2  PEFR2
Before  310 After   299
Before  242 After   201
Before  340 After   232
Before  388 After   312
Before  294 After   221
Before  251 After   256
Before  391 After   327
Before  401 After   331
Before  287 After   231

这是我用过的所有代码:

drugs <- read.table(file = "C:\\Users\\Becky\\My Documents\\Asthmadata.txt", header = TRUE)

drugs
str(drugs)

mean.drugs <- tapply (drugs$trial1, list(drugs$PEFR1), mean)
mean.drugs

我拥有的 R 版本有两个版本:i386 3.1.3 和 x64 3.1.3 – 我都尝试过,但似乎都没有达到我想要的效果。我也在使用 Windows 7 Home Premium 64 位。希望我已经包含了您需要的所有内容,如果我的格式关闭,我深表歉意——我还不能完全弄清楚如何在此处正确格式化。

当运行 Roland 提供的代码时,我现在得到的错误是:“split.default(X, group) 中的错误:第一个参数必须是一个向量”。所以我每次尝试都会遇到不同的错误——这一定是我做错了。

希望我已正确格式化所有内容并包含您需要的所有内容。谢谢:)

【问题讨论】:

  • 你的意思是mean.Asthmadata &lt;- tapply(drugs$trial1, list(drugs$PEFR1), mean)?你没有调用你的 data.frame Asthmadata。 R 不在乎那是文件名。
  • 我这么认为?编辑:是的,我确实打算按照你的建议做,但是我最初是这样做的,但它没有用,所以我尝试改变一些事情。即使我在代码中使用了 drug$trial1 而不是 Asthmadata$trial1,它也不起作用。除了“没有找到试验1”而不是“没有找到哮喘数据”之外,说同样的错误。所以我很困惑。
  • @Roland 我刚刚回到我的数据并使用了你提供的代码,现在我得到了这个:> mean.Asthmadata
  • 我们真的需要reproducible example 才能提供帮助。请查看该链接的内容...
  • @Ben 嗨,我已将您需要的信息放在我的原始评论中,因为这里太长了,我无法弄清楚如何正确格式化,所以请查看编辑 -谢谢

标签: r


【解决方案1】:
drugs <- read.table(header=TRUE,text="
trial1  PEFR1   trial2  PEFR2
Before  310 After   299
Before  242 After   201
Before  340 After   232
Before  388 After   312
Before  294 After   221
Before  251 After   256
Before  391 After   327
Before  401 After   331
Before  287 After   231")

在当前格式中,您可以通过以下方式计算之前和之后的平均值

mean(drugs$PEFR1)

mean(drugs$PEFR2)

你可能想到的是这个形状:

drugs2 <- with(drugs,
                data.frame(trial=c(as.character(trial1),
                                   as.character(trial2)),
                           PEFR=c(PEFR1,PEFR2)))
  • 为方便起见,我使用了with()——这是一种临时附加数据框的方法,因此您可以直接引用其中的变量。)
  • 在组合trial1trial2 时会遇到一些问题,因为它们会被强制转换为数字代码,这两种情况下都是1,除非您使用as.character() ...
  • 您有要聚合的变量和要向后分组的变量的顺序(您希望通过 trial 聚合 PEFR,而不是相反)
mean.drugs <- with(drugs2,
                   tapply (PEFR, list(trial), mean))
##    After   Before 
## 267.7778 322.6667 

【讨论】:

  • 谢谢。我试了一下,现在收到一条新的错误消息,上面写着:[1] NA 警告消息:在 mean.default(drugs$PEFR1) 中:参数不是数字或逻辑:返回 NA。
  • 抱歉回复延迟,只是想说谢谢你的帮助,我终于用你提供的信息和代码弄明白了:)
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 2018-06-06
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多