2017-02-16 62 views
-2

我有使用for循環的問題。我的問題是:如果兩列相等(有176或184或180或182或163或167的值)替換兩列= NULL比較兩列並替換爲R包

我寫了腳本,但它不起作用。

for (i in dane.dzikie$REN75M10 && dane.dzikie$REN75M10.1) if (i==176 | 184 | 180 | 182 | 
                  163 | 167) {i=NULL} 

這是我的數據的一部分: enter image description here

我想換成第一,第五和最後一列,應更換爲NA,因爲兩列包含176或184或180或182或值或163或167。這兩個列中的條件是相同的值。

+1

請仔細閱讀如何提問以及如何提供可重複的示例。請記住,R是矢量化的。大部分時間For-loops不是答案。 – Heroka

+0

另外,不能使用'|'作爲「或」來表示數字(或者'&&'表示這些變量是什麼),只能用於已經是布爾值的東西。相反,在%c(176,184,...)'中使用'i%'。你不能(很容易)將NULL放在data.frame中;你可能是指'NA'。 – alistaire

回答

0
# example dataframe something like this? 
dane.dzikie <- data.frame(REN75M10=c(176, 184, 5, 6, 7), 
          REN75M10.1=c(163,1,2,3,4), OTHER=c(163,2,3,4,5)) 

columns=c("REN75M10", "REN75M10.1") 
invalid.values <- c(176,184,180,182,163,167) 
dane.dzikie[,columns] <- 
    apply(dane.dzikie[,columns], 2, 
     function(x) ifelse(x %in% invalid.values, NA, x))       
+0

它與我的問題類似,但它應該是這樣的:如果我在行中有兩個值,例如它應該取代NA。只有176位在同一行的兩列中。 –