2013-06-03 1 views
1

참고로, R을 사용하는 것이 처음이므로 코드가 매우 복잡 할 수 있습니다. 나는 이것에 대한 숙제를했지만 R에 대한 "예외"논리 연산자를 찾을 수 없었으며 실제로 코드에서 이와 같은 것이 필요합니다. 내 입력 데이터는 12 열 1440 행의 정수 및 Null 값을 포함하는 .csv입니다.If 문에 대한 논리 "예외"연산자 R

oneDayData <- read.csv("data.csv") # Loading data 
oneDayMatrix <- data.matrix(oneDayData, rownames.force = NA) #turning data frame into  a matrix 


rowBefore <- data.frame(oneDayData[i-1,10], stringsAsFactors=FALSE) # Creating a variable to be used in the if statement, represents cell before the cell in the loop 

ctr <- 0 # creating a counter and zeroing it 


for (i in 1:nrow(oneDayMatrix)) { 
    if ((oneDayMatrix[i,10] == -180) & (oneDayMatrix[i,4] == 0)) { # Makes sure that there is missing data matched with a zero in activityIn 
    impute1 <- replace(oneDayMatrix[ ,10], oneDayMatrix[i,10], rowBefore) 
    ctr <- (ctr + 1) # Populating the counter with how many rows get changed 
    } 
    else{ 
    print("No data fit this criteria.") 
    } 
} 
print(paste(ctr, "rows have been changed.")) # Printing the counter and number of rows that got changed enter code here 

나는에 조건을 제외하고 어떤 종류를 추가하고 싶습니다 내 일처럼 말한다 문 또는 이에 상응하는 경우 : 위의 두 조건을 사용하십시오 (경우 코드의 문)을 제외하면 oneDayMatrix [I-1, 4] > 0.이 문제에 대해 정말 감사 드리며 미리 감사드립니다.

+0

적절한 논리 표현식을 작성하기 만하면됩니다. 예외는'i = 1' 일 때 의미가 없다. –

+0

'rowBefore <- ...'는 정의되지 않은'i'를 사용합니다. – flodel

+0

정말 고마워요. 분명히 많은 버그가 있었고 모두 매우 도움이되었습니다! – Misc

답변

0

"예외"는 "그렇지 않은 경우"와 동일합니다. R의 "not"연산자는 !입니다. 동등

if ((oneDayMatrix[i, 10] == -180) & 
    (oneDayMatrix[i, 4] == 0) & 
    !(oneDayMatrix[i-1, 4] > 0)) { ... } 

또는 : 그래서 oneDayMatrix[i-1, 4] > 0 예외를 추가, 당신은 단지 다음과 같이 if 문을 수정해야이가 할 ​​필요가 몇 가지 수정의 상단에 간다

if ((oneDayMatrix[i, 10] == -180) & 
    (oneDayMatrix[i, 4] == 0) & 
    (oneDayMatrix[i-1, 4] <= 0)) { ... } 

당신의 코드 : 나는 지적

  1. , rowBefore가 제대로 정의되지 않은 : 아직 정의되지 않은 i의 관점에서. for 루프 내에서 rowBeforeoneDayMatrix[i-1, 10]
  2. 으로 바꿔서 @noah 지적한대로 두 번째 인덱스 인 for (i in 2:nrow(oneDayMatrix))에서 루프를 시작해야합니다.
+0

이것이 내가 필요한 것입니다. 고마워요! – Misc