Is
there a way to multiply a matrix
times
a vector of symbols?
For
instance, could I do this:
1
0 0 a
0 1
0 times b
-1 2
1 c
which
should result in :
a
b
c ?a
-2*b
where a, b, and c
are
as yet not assigned numeric values?
........................... judson blake
[[alternative HTML version deleted]]
I believe it is possible, but R is not really a full-fledged symbolic algebra
system so it wouldn't be an intuitive tool to use and what would you do with
it once you had it? It is much more useful in R to do something like
f1 <- function( M, A, B, C ) {
M %*% c( A, B, C )
}
m <- matrix( c( 1,0,-1,0,1,2,0,0,1 ), ncol=3 )
f1( m, 3, 4, 5 )
# [,1]
# [1,] 3
# [2,] 4
# [3,] 10
which manipulates numeric values according to your definition.
For future reference... Please post on this list using plain text format... your
email was a pain to decipher.
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live
Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.
On October 31, 2015 8:52:51 AM PDT, Judson <judsonblake at msn.com>
wrote:>
>
>Is
>there a way to multiply a matrix
>
>times
>a vector of symbols?
>
>For
>instance, could I do this:
>
>1
>0 0 a
>
>0 1
>0 times b
>
>-1 2
>1 c
>
>
>
>which
>should result in :
>
> a
>
> b
>
> c ?a
>-2*b
>where a, b, and c
>
>are
>as yet not assigned numeric values?
>
>........................... judson blake
>
>
>
> [[alternative HTML version deleted]]
>
>
>
>------------------------------------------------------------------------
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.
You are describing an awkward way of doing this (and your example is unreadable
because you are not following posting instructions for the list) ... but the
following contains the essence of what I think is needed: parse() and eval().
v <- character()
v[1] <- sprintf("%d ^ %s", 2, "duck")
v[2] <- sprintf("%d * %s", 4, "crow")
# [1] "2 ^ duck" "4 * crow"
duck <- -2
crow <- pi
eval(parse(text=v[1]))
# [1] 0.25
eval(parse(text=v[2]))
# 12.56637
However, myself, I would not use symbols, but a named vector of values - unless
it's important to you that these are _actually_ symbols. You probably avoid
some conversions from and to symbols.
v1 <- c(2, 4)
v2 <- c(duck = -2, crow = pi)
v1[1] * v2["duck"]
v1[2] * v2["crow"]
You can of course freely interconvert and cast your symbol names to character:
duck <- 100
v2[as.character(quote(duck))] <- duck
v1[1] * v2["duck"]
#[1] 200
B.
On Oct 31, 2015, at 11:52 AM, Judson <judsonblake at msn.com> wrote:
>
>
> Is
> there a way to multiply a matrix
>
> times
> a vector of symbols?
>
> For
> instance, could I do this:
>
> 1
> 0 0 a
>
> 0 1
> 0 times b
>
> -1 2
> 1 c
>
>
>
> which
> should result in :
>
> a
>
> b
>
> c ?a
> -2*b
> where a, b, and c
>
> are
> as yet not assigned numeric values?
>
> ........................... judson blake
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.