我的R代码是:
means_log_adj <- aggregate(lab_data[,delta_touse],
by = list(
factor(mydata_adj$Response_EP, labels = c("non_responder", "responder")),
factor(mydata_adj$sex,labels = c("male","female")),
factor(mydata_adj$timepoint,labels = c("baseline","wk1","wk2","EP"))),
mean)
Warning message:
> mistake in factor
> (mydata_adj$Response_EP, labels =
> c("non-responder", "responder")):
> invalid labels; length 2 should be 1
> or 0.
有人可以帮我解决问题吗?
答案 0 :(得分:13)
经过一些试验和错误后,我设法重现了你的问题。
但首先让我说R中的warning
和error
之间存在非常重要的区别。当您报告问题时,请务必清楚地区分这两者。
x <- letters[1:5]
factor(x, labels=LETTERS[1:10])
Error in factor(x, labels = LETTERS[1:10]) :
invalid labels; length 10 should be 1 or 5
发生此错误是因为您告诉factor()
使用不存在的级别重新标记数据。我为一个只包含5个级别的变量指定了10个标签。这意味着标签和级别不匹配。
有两种方法可以解决这个问题:
第一个是让R确定级别,只需在没有任何参数的情况下调用factor(x)
。 (猜测,这可能是你在代码中应该做的。):
factor(x)
[1] a b c d e
Levels: a b c d e
第二种方法是致电factor(x)
并指定levels
,而不是labels
:
factor(x, levels=letters[1:10])
[1] a b c d e
Levels: a b c d e f g h i j
您尚未提供样本数据,因此我们无法测试解决方案。但请尝试以下代码:
means_log_adj <- aggregate(lab_data[,delta_touse],
by = list(
factor(mydata_adj$Response_EP,),
factor(mydata_adj$sex),
factor(mydata_adj$timepoint)),
mean)
答案 1 :(得分:1)
将于2011年6月20日12:48添加到Andrie
在示例中提供为:
factor(x)
[1] a b c d e
Levels: a b c d e
计算结果集中的级别数。这里有5个,因此您可以将比率设置为1:5。这在执行bubbleMap的key.entries变量时效果很好。当我收到此错误时,我要做的第一件事是安德烈(Andrie)规定的内容,并使用显示的级别数更新比率。