Loading
2015. 4. 6. 09:10 - 성돌

Mathematica에서 문자열(String)을 정의하고 다루는 방법 정리



Mathematica에서 문자열(String)을 정의하고 다루는 방법에 대해서 알아보자.

혹시, String이란 말을 처음 들어봤다면,
지금 꼭 외워두도록 하자.

String이라는 말은 Mathematica에서만 쓰는 것이 아니라,
거의 모든 프로그래밍에서 사용되는 말이며...
프로그래밍에서 데이터 분석으로 복잡한 무언가를 하게되면, 굉장히 필요해지는 기능이다.

String이 뭐냐면.. 말 그대로 문자이다.
이것은 함수처럼 기능을 하기보다는 이름을 붙이기 위해 사용된다고 보면 된다. 

Mathematica에서는 기본적으로 무언가를 정의할 때,
Expression이라는 것과 String이라는 것이 있는데...

쉽게 말해서 Expression은 수학에서 사용되는 함수나 숫자라고 생각하면 되고,
String은 아직 함수나 숫자가 아닌 그냥 문자들이다.

String을 정의할 때는 아래와 같이 ""안에 원하는 문자를 입력함으로 정의할 수 있다.


예를 들어, "1"은 1이라는 이름을 가진 문자이지, 실제로 숫자 1이 아니다.



이 String을 다루는 기능 중에서 가장 중요한 것중 하나는 String을 합치는 기능일 것이다.
예를 들어, "Water"라는 String와 "Density"라는 String을 합칠 때에는
StringJoin명령어를 사용하여 아래와 같이 합칠 수 있다.


그런데, Mathematica에는 이 StringJoin의 똑같은 기능을
훨씬 더 간단한 방법으로 할 수 있게 해준다.
바로 <>명령어를 이용해서 합쳐주는 것이다.
아래의 예처럼 말이다.


명령어가 훨씬 보기 쉽고, 짧지 않은가?
그래서 대부분 StringJoin대신 <>를 사용한다.

아무튼 이렇게 하면 "WaterDensity"라는 String이 생겨나게 된다.



아래부터는 조금 복잡할 수 있는데,
알아두면 정말 유용하게 사용될 수 있으니 필요하다면 잘 읽어보자.


그렇다면 이제는 이 String을 Expression으로 바꾸어서 사용
보자.


예를 들어 아래와 같이 WaterDensity라는 Expression에 998이라는 숫자를 입력하고 싶을 때,
래와 같이 String을 이용하지 않고 직접 할 수 있다.


그러면 이번에는 String을 이용하여서...
String인 "Water"와 "Density"를 합치고 이를 Expression으로 바꾸고 난 후,
여기에 998이라는 숫자를 저장해보자.

아래와 같이  ToExpression과 
Evaluate명령어를 이용해줌으로 할 수 있다.


위에서 ToExpression을 사용한 이후에 Evaluate도 사용해줬는데...
ToExpression은 왜 사용해줬는지 이해가 되겠지만...
Evaluate은 왜 사용해줬는지 헷갈릴 것이다..

이건 문자열을 Expression으로 바꾸는 부분이 등호인 =왼쪽에 있을 때만 이렇게 해주면 되는 것으로
이렇게 왼쪽에 있을 때는 자동적으로 Evaluate이 안되기에
굳이 Evaluate명령어를 넣어주는 것으로 이해하면 될 것이다.

예를 들어, WaterDensity의 값을 위와 같이 입력하고, 이 값에 100을 더해보자.
아래와 같이 하면 된다.


String을 Expression으로 바꾸는 부분이 =의 왼쪽에 있지 않을 때는 
Evaluate명령이 필요하지 않다는 것을 알 수 있다.

그냥 String을 안 사용하면 훨씬 간단한 것을 왜 이렇게 복잡하게 하느냐고?
물론 여기서 보여준 예에 대해서는 String을 사용하는 것이 훨씬 복잡하다.

하지만 만들어야 하는 데이터 이름의 조합이 수십 개 또는 수백개가 될 경우...
또 그 데이터 이름들로 연산을 하며.. 계산을 해야하는 경우...
이런 방법을 사용함으로 훨씬 간결하고 짧게 코딩으로 데이터 분석을 할 수 있게 될 것이다.