[英]R: loop for, ifelse and two conditions
我嘗試使用ifelse函數進行循環。 不幸的是,它不起作用。 這是我的代碼:
> data$x.Koordinate<-as.numeric(data$x.Koordinate)
> data$G<-as.numeric(data$G)
> for (i in 1:length(data$x.Koordinate)) {
+ ifelse((data$x.Koordinate[i]/data$x.Kooridnate[i+1]==1)& ifelse((data$G[i+1]<16),"nothing",data$x.Koordinate[i+1]))
+ }
Error in (data$x.Koordinate[i]/data$x.Kooridnate[i + 1] == 1) & ifelse((data$G[i + :
operations are possible only for numeric, logical or complex types
關於該問題的解釋:我試圖對R說到我的變量x.Koordinate的每個x坐標,然后將其除以最后一個。 如果結果為1 =相同的坐標,否則返回不同的坐標。 因此,我希望R在相同的坐標下並且該坐標的G值小於16(第二種情況)時說“無”或“空”。 如果它不等於1,並且G的值大於16,請給我這個坐標。
我不明白為什么我的代碼中有錯誤,因為我已經將變量放入數字中。
這是我的數據:
ID Bezeichnung x.Koordinate y.Koordinate G N hdom V Mittelstamm Fi Ta Foe Lae ueN Bu Es Ei Ah ueL Struktur
1 10,809 62 205450 603950 8 1067 21 64 10 NA NA NA NA NA 100 NA NA NA NA NA
2 10,810 63 205450 604000 16 1333 22 128 12 NA NA NA NA NA 75 NA NA 25 NA NA
3 10,811 56 205500 604050 20 800 22 160 18 NA NA NA NA NA 60 NA NA NA 40 NA
4 10,812 55 205500 604000 12 1033 20 97 12 33 NA NA NA NA 67 NA NA NA NA NA
5 10,813 54 205500 603950 20 500 56 0 23 NA NA NA NA NA 100 NA NA NA NA NA
6 10,814 46 205550 604050 16 567 32 215 19 75 NA NA NA NA 25 NA NA NA NA NA
7 10,815 47 205550 604100 16 233 26 174 30 NA 25 NA NA NA 50 NA NA NA 25 NA
謝謝您的幫助!
編輯
嗨,現在我已經嘗試過了:
test<- function(x) { for (i in 1:length(data$x.Koordinate)) {
result<-ifelse(data$x.Koordinate[i] == data$x.Kooridnate[i+1], ifelse(data$G[i+1]<16, "null", data$x.Kooridnate[i+1]))
return(result)
}}
但這什么也沒給我...
我不確定您希望如何存儲輸出,但是我認為這可以為您提供所需的信息:
for (i in 1:(length(data$x.Koordinate)-1)) {
print(ifelse(data$x.Koordinate[i] == data$x.Koordinate[i+1] & data$G[i+1]<16,"nothing",data$x.Koordinate[i+1]))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.