我在解决有关在数据框中选择值的问题时遇到了一些困难。这里是: - 我有一个数据框包含这些变量:x坐标,y坐标,直径,G值,H值,质量值,生态价值。每一行对应一个单独的(这也是这项运动树)R:选择具有条件的x,y坐标
- 我需要找到最好的质量值的个体=这个我能做到这一点
- 但后来,我一定要找到第二棵树具有良好的质量值,该值必须位于参考树的10个下一米(具有最佳质量值的米)中。
- 这个选择必须在选择的每棵树上进行,每次进一步增加10米!
- 这应该让我选择x-y坐标,它们之间相距10米,代表了良好的质量值。
现在,这里是我的尝试:
> kk<- function(x, y)
+ {
+ coordx<-data$x.Koordinate[data$Q==24] #I have looked before for the best quality value of the sample, which is 24
+ coordy<-data$y.Koordinate[data$Q==24]
+ x <- ifelse(data$x.Koordinate>coordx-11 & data$Q>15,data$x.Koordinate,0) #I choose that I did'nt wanted to have less than 15 of quality value
+ y<-ifelse(data$y.Koordinate>coordy-11 & data$Q>15,data$y.Koordinate,0)#-11 meters from the reference coordinates, the next tree selected has to be inbetween
+ return(c(x,y))
+ }
> kk(data$x.Koordinate, data$y.Koordinate)
[1] 0 0 0 0 0 205550 205550 0 205600 205600 0 0 0 0 0 0 0
[18] 604100 0 604150 604100 0
的这里的问题是,我们不能清楚地看到坐标x和那些为y之间的差异。
我尝试这样做:
> kk<- function(x, y)
+ {
+ coordx<-data$x.Koordinate[data$Q==24]
+ coordy<-data$y.Koordinate[data$Q==24]
+ x <- ifelse(data$x.Koordinate>coordx-11 & data$Q>15,data$x.Koordinate," ")
+ y<-ifelse(data$y.Koordinate>coordy-11 & data$Q>15,data$y.Koordinate," ")
+ return(list(x,y))
+ }
> kk(data$x.Koordinate, data$y.Koordinate)
[[1]]
[1] " " " " " " " " " " "205550" "205550" " " "205600" "205600" " "
[[2]]
[1] " " " " " " " " " " " " "604100" " " "604150" "604100" " "
>
这里我们可以看到更好的相关x和y坐标的两个层次。
第一个问题很简单:该函数是否可能以x,y或x y的形式返回值? (没有任何0或«»或空格)还是应该使用另一个R函数来获得这个结果?
第二个问题很复杂:我怎么能说R让他从第一次尝试中发现的坐标和整个数据中重复这个功能?
哦,那就是for命令缺少一个右括号 –
是的,我已经看到它!但是它仍然不起作用。 '> Arbres <-kk(x.Koordinate,y.Koordinate,data = data) > for(i in 1 :(length(Arbres [,1]))){ + kk(Arbres [i,1],Arbres [i,2]) +} kk中的错误(Arbres [i,1],Arbres [i,2]): 承诺已在评估中:递归默认参数引用或更早的问题?' –
我在原始响应中更正了一些编码错误,但我无法重现您的错误,所以我不确定是什么驱动它。我发布的代码现在在我的机器上运行良好,但它只打印结果,并不实际保存它们。关于进一步的10米,我认为这是你使用x和y坐标的逻辑条件。 –