【发布时间】:2014-11-09 22:29:50
【问题描述】:
你能解释一下我在循环中的错误
数据集是这样的
plot<-c("A", "B", "C")
s<-c(0.3, 0.7, 0.6)
pe<-c(0.7, 0.3, 0.4)
a<-data.frame(plot, s, pe)
library(reshape)
a.long<-melt(a, id=c("plot")
a.long1<-a.long[order(a.long$plot, -a.long$value),]
现在我的两个循环不起作用
a.long1$maxS<-0
while (i <= length(a.long1$plot)+1){
if (a.long1$plot[i]==a.long1$plot[i+1]){
a.long1$maxS[i]<-1
} else {
a.long1$maxS[i]<-0
}
i = i+ 1
}
和
for (i in 1:length(a.long1$plot)){
if (a.long1$plot[i] == a.long1$plot[i+1] ) {
a.long1$maxS[i]=1
} else {
a.long1$maxS[i]=0}
}
我理解我犯的错误,即在数据末尾声明 a.long1$plot[i] == a.long1$plot[i+1]NA 值,但我无法使其工作,即使尝试了几个小时。
【问题讨论】:
-
请避免给
plot赋值,因为它是一个内置函数。 -
我更改了变量的名称,但仍然收到: if (a.long1$plotek[i] == a.long1$plotek[i + 1]) { : TRUE/FALSE 中的缺失值需要
-
此处缺少右括号:
a.long<-melt(a, id=c("plot")。i没有为while语句定义,因此它是不可重现的。在for循环中,i必须介于 1 和 5 之间,如果您希望它工作的话。
标签: r loops for-loop while-loop