2010년 8월 18일 수요일

일부를 제외하고 치환하려면

예를 들어 {f[x], g[x], h[x]}이 있는데, xy로 치환한다고 하자. 이건 쉽다.
{f[x], g[x], h[x]}
% /. x -> y
이렇게 하면, {f[y], g[y], h[y]}를 얻을 수 있다. 그러면 h[x]x만 치환한다면? 물론 여기선 ReplaceAll[{f[x], g[x], h[x]}, h[x] -> h[y]]로 바꾸는 게 가장 쉽지만, 일반적으로는 아래처럼 하면 된다.
{f[x], g[x], h[x]}
% // MapAt[# /. x -> y &, #, 3] &
그럼 f[x]만을 제외하고 치환하려면? ReplaceAll은 한번 치환한 건 다시 치환하지 않으므로, 다음과 같이 쉽게 해결할 수 있다.
{f[x], g[x], h[x]}
% /. {f[x] -> f[x], x -> y}

댓글 없음:

댓글 쓰기