Re: Function to detect presence of a variable in
- To: mathgroup at smc.vnet.net
- Subject: [mg109398] Re: Function to detect presence of a variable in
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Sun, 25 Apr 2010 06:24:22 -0400 (EDT)
The default levelspec for Position is {0,Infinity}, but level 0 doesn't work (in any way that makes sense): expr = x; Position[expr, x, {0, Infinity}] {{}} FAIL! This contradicts, I think, tutorial/LevelsInExpressions, where Help says: "You can think of levels in expressions in terms of trees. The level of a particular part in an expression is simply the distance down the tree at which that part appears, with the top of the tree considered as level 0." x is obviously the top of TreeForm[x]... but according to Position, x appears nowhere in x, at all. Cases works, however. expr = 1/x; Length@Cases[expr, x, {0, Infinity}] 1 expr = 1*x; Length@Cases[expr, x, {0, Infinity}] 1 Bobby On Sat, 24 Apr 2010 03:01:50 -0500, <carlos at colorado.edu> wrote: > I would like to have a function > > k = CountMeIn[expr,var] > > that returns the number of times var appears in expr, eg. > CountMeIn[(1/x)^x,x] returns 2. var could be a list, in which case > k would be a conforming list: k = CountMeIn[(2/x)^(x*w^4*z),{x,y,w,z}] > should return {2,0,1,1}. expr is never a list. > > Tried to use Position for this, but the behavior is finicky: > Position[1/x,x] returns {{1,1}} but Position[x,x] or Position[1*x,x] > returns {{}} (why?) May be expr should be converted to {expr} > inside the function for safety? > -- DrMajorBob at yahoo.com