격자를 R로 저장하고 싶다면 쉽게 할 수 있습니다.R에 육각형 그리드를 "원래대로"저장할 수 있습니까?
말,
| | 0 | 1 | 2 |
|----|------|-------|-------|
| 0 | TRUE | TRUE | FALSE |
| 1 | NA | FALSE | TRUE |
| 2 | TRUE | TRUE | FALSE |
시스템을 좌표 직교로 저장됩니다
m <- matrix(data = c(TRUE, TRUE, FALSE, NA, FALSE, TRUE, TRUE, TRUE, FALSE), nrow = 3, ncol = 3, byrow = FALSE)
예상대로 기존의 방법과 수학 작업 :
apply(X = m, MARGIN = 2, FUN = "sum")
# [1] 2 NA 2
print(m)
# [,1] [,2] [,3]
#[1,] TRUE NA TRUE
#[2,] TRUE FALSE TRUE
#[3,] FALSE TRUE FALSE
가 (나는 또한 reshape2::melt
이 할 수있는 알고 긴 형태로 만들었지 만, UI가 어떻게 생겼는지 알기 때문에 폭넓게 좋아합니다.)
지금까지 그렇게 잘 익숙하고 직관적이었습니다.
이제 육각형 그리드를 입력합니다.
는 나는 정말, 위의 예에서와 같이 큐브 시스템 좌표 사용하여 이러한 그리드를 저장한다고 Amit Patel's marvellous/authoritative introduction to hex grids에서 이해하기 때문에, 그렇지 않으면 (= 2 차원 직교 좌표 플러스 오프셋 (offset)) 선형 대수 연산 더 이상 작동하지 않으며 일반적인 코드가 계속 발생합니다. 나는 그것을 얻는다 (나는 생각한다).
(자세한 내용은 다시, 아 미트 파텔의 explainer 환상적인 참조). 많은 세포도 존재하지 않기 때문에
array()
를 통해 넓은 형식에서 데이터를 입력은 완전히 제정신이 보인다 (그리고 NA
이미 사용된다). 그래서 나는과 같이 긴 형태/저장이 입력 :
df <- rbind(c(1, 0, -1, FALSE),
c(0, 1, -1, NA),
c(1, -1, 0, TRUE),
c(0, 0, 0, TRUE),
c(-1, 1, 0, FALSE),
c(0, -1, 1, NA),
c(-1, 0, 1, TRUE))
colnames(df) <- c("y", "x", "z", "value")
df
# y x z value
#[1,] 1 0 -1 0
#[2,] 0 1 -1 NA
#[3,] 1 -1 0 1
#[4,] 0 0 0 1
#[5,] -1 1 0 0
#[6,] 0 -1 1 NA
#[7,] -1 0 1 1
이 dataframe 모든 데이터를 가지고 있지만 x
, y
및 z
대각선 좌표 것을 "알고있다"어떤 방식으로하지 않습니다.
어떻게 I : I 쉽게 선형 행렬 대수학을 사용할 수 넓은 형태
- 매장이,
- 사용 정해진 방법 (예를 들어,
colSums()
또는apply()
) - 로서 편리하게도
print
을 다음과 같이 바꾼 것 :
(SE는이 인쇄 된 16 진수 그리드를 적절하게 강조 표시하지 않으므로 스크린 샷을 표시합니다.)
즉, 은 "육각형"그리드을 "R"에 "기본적으로"저장하는 우아하고 권장 된/표준적인 방법일까요?
나는 이미 내 자신의 S3 OO를 구현할 수 있음을 모호하게 알고 있습니다. 그러나 이것이 이미 어떤 형태로 존재할 수 있기를 바랬지 만. I 는는 연속적인 데이터에 비닝 16 진수 않는 패키지를 많이 찾았어요,하지만 그들은 이 진수 그리드를 저장, 또는 적어도 그 내부를 노출하지 않았다 처리하는 것 같지 않았어요. 내가 쉽게 사용할 수있는 다양한 형태의