2017-02-16 3 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

I 모두 열 176 또는 184 또는 180 또는 182를 포함하기 때문에 NA위한 대체되어야 1, 제 5 및 마지막 열을 교체하고자 163 또는 167 값. 조건은 두 열의 값이 같습니다.

+1

재현 가능한 예를 제공하는 방법 및 재현 가능한 방법을 읽어보십시오. R은 벡터화된다는 점에 유의하십시오. For-loops는 대부분의 해답이 아닙니다. – Heroka

+0

또한, 숫자에 대해서는 (또는 그 변수가 무엇이든간에 '&&') '|'를 사용할 수 없으며, 이미 부울 값인 경우에만 사용할 수 있습니다. 대신 % i에서 % i (176, 184, ...)를 사용하십시오. 그리고 당신은 (쉽게) data.frame에'NULL'을 넣을 수 없습니다; 당신은 아마도 '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

내 문제와 비슷하지만 다음과 같이 표시되어야합니다. 176 그것은 NA를 대신해야한다. 176이 같은 행의 두 열에있는 경우에만. –

관련 문제