![첫 번째 행과 두 번째 행의 요소를 비교하는 데이터 프레임을 반복합니다.](https://linux55.com/image/113750/%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%ED%96%89%EA%B3%BC%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%96%89%EC%9D%98%20%EC%9A%94%EC%86%8C%EB%A5%BC%20%EB%B9%84%EA%B5%90%ED%95%98%EB%8A%94%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%94%84%EB%A0%88%EC%9E%84%EC%9D%84%20%EB%B0%98%EB%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
데이터프레임을 반복하면서 실제 행과 다음 행의 요소를 비교하고 싶습니다.
예를 들어 다음과 같은 데이터프레임이 있습니다.
V1 V2 V3 V4
1 chr1 10 1000 2000
2 chr1 10 2000 3000
3 chr1 10 4000 5000
.
.
.
첫 번째 행, 네 번째 열의 요소를 두 번째 행, 세 번째 열의 요소와 비교하고 동일하면 무언가를 한 다음 두 번째 행, 네 번째 열의 요소를 세 번째와 비교하고 싶습니다. 세 번째 열에 요소를 추가하고 몇 가지 작업을 수행합니다.
그래서 나는 다음과 같은 것을 시도하고 있습니다.
for (i in 1:nrow(my_dataframe)){
if (my_dataframe[i, 4] == my_dataframe[i+1 , 3]) {
print("OK")
}
}
그래서 이것은 나에게 예제 데이터 프레임 1을 줄 것입니다.
그러나 다음 오류가 발생하므로 R은 i+1을 좋아하지 않는 것 같습니다.
Error in if (tabla4subset[i, 4] > tabla4subset[i + 1, 3]) { :
missing value where TRUE/FALSE needed
이 작업을 수행하는 방법을 아는 사람이 있나요?
답변1
어느 것이 문제인지 알 것 같습니다.
i + 1 = nrow(my_dataframe) + 1
예를 들어, 내 데이터프레임에 10개의 행이 있는 경우 끝에 있는 행 10을 존재하지 않는 행 11과 비교하려고 합니다. 따라서 해결책은 다음과 같습니다.
for (i in 1:(nrow(my_dataframe)-1)) {
if(my_dataframe[i, 4] == my_dataframe[i + 1, 3]) {
print("OK")
}
}