2016-09-19 3 views
2

이 줄은 자바 프로그래머가 이해하기가 정말 어렵습니다. 나는 '< -'연산자가 할당 연산자라고 생각한다. 그러나 내부 하위 프로세스를 어떻게 이해할 수 있습니까? c (5,4)는 두 개의 값을 가진 벡터를 만든 다음이 값을 dim 함수의 입력으로 전달하는 방법은 무엇입니까? 이 협약은 내가이 사실을 잘 알기에 좋지 않습니다. 당신이 올바른지dim() 함수의 매개 변수를 삽입하는 규칙

dim(m) <- c(5,4) # Dimensions set to 5 & 4, so m is now a 5x4 matrix 

답변

2

"신택스 설탕"이라고도합니다.

R의 개체는 이론적으로 변경할 수 없습니다. 같은 일을 뭔가 : 그것은 m을 변화처럼

dim(m) = c(4,5) 

보이지만 실제로는 구문 트리처럼되고 기록됩니다 D 다른 매트릭스에서와 매트릭스를 구성하는 기능이

m = D(m, c(4,5)) 

을 새로운 차원 세트 이전 m은 아마도 가비지 수집을 위해 작동 할 것이고, 이름 m은 이제 다시 치수가 지정된 행렬을 가리 킵니다.

이런

문법적는 B 원래 a하지만 행 벡터를 생성하는 생성자 함수이다 a = B(a,1,2) 같은 구문 트리로 표현 a[1]=2 같은 목적 돌연변이 것 대부분의 장소에서 R에서 사용 첫 번째 값은 2로 설정됩니다.

주가 : <-와 함수 이름이 조금 이상한 보이지만 R에서 완벽하게 허용되는 식별자 때문에 이러한 할당 기능, 위의 예에서 DB 실제로 R에 dim<-[<- 명명 된, 나는 명확성을 위해 DB라고

+0

모든'* <-'함수에 대해 말하는 내용이 일반적으로 사실이지만 [[<] 함수는 (적어도 최근 R 버전에서는) 다르게 처리되고 실제로 객체를 변경할 수 있습니다 * 참조 *. 예를 들어'require (data.table); a <-1 : 10; address (a); [7L] <- 11L; address (a)'를 시도해보십시오. 종종 교체 전후의 주소가 동일합니다. – nicola

+0

@nicola [[- 무엇을 의미합니까? – verystrongjoe

+0

그리고 인스턴스를 시도했습니다. 그러나 나는 여러 번 노력했다. 그러나 모두 같았습니다 – verystrongjoe

0

<-는 (거의 모든 상황에서, 그것은 = 연산자와 동일합니다) 할당 연산자입니다. 당신이

dim(m) <- c(5, 4) 

을 실행하면

당신은 실제로 기능

dim<- 

이 기능은 심지어 도움말 페이지 ?dim<-를 가지고 호출된다. 당신이 dim(m) <- *을 수행 할 때, 당신은 실제로 다른 함수를 호출하고

# Vectors 
x[1] = 10 
## Data frames 
df[1, 2] = 50 
+0

그래서 연산자는 왼쪽의 값에 값을 할당 할뿐만 아니라 매개 변수를 왼쪽의 함수에 할당한다는 의미입니까? – verystrongjoe

+0

귀하의 의견을 이해하는 경우 예 – csgillespie

1

을 설정 : 그래서

dim(m) <- c(5, 4) 

m <- `dim<-`(m, c(5, 2)) 

이 R에 매우 일반적으로 동일합니다 m의 크기 이 기능은 dim<-입니다. 다음과 같습니다.

이렇게하면 지정한 크기로 새 행렬이 반환됩니다. R 구문 분석기는 원래 구문을 dim<-으로 호출하는 작업을 처리합니다.

names(*) <-, class(*) <- 등과 같은 다른 할당 작업에서도 똑같은 일이 발생합니다. m[a, b] <-과 같은 하위 집합에 할당 할 때도 발생합니다.이 경우 함수는 [<-입니다.

관련 문제