F
Frank
Hi,
I use rpy on linux to call R functions. Works fine up to the following
problem: How to parse arrays (no vectors, that means 2-dimensional) to
R without much effort?
The following code solves the problem (in two different ways).
However, it seems to me that there might be a way to do it more
efficiently.
rpy.r.assign("N", N)
rpy.r("A2 <- array(1:N^2, dim=c(N,N))")
rpy.r("A3 <- array(1:N^2, dim=c(N,N))")
for i in range(N): # two alternative ways to parse
arrays
rpy.r.assign("Wi", W)
rpy.r.assign("i", i+1)
rpy.r("""for( j in 1:N ){
A2[i,j] <- Wi[j]}""")
for k in range(N):
rpy.r.assign("k", k+1)
rpy.r("A3[i,k] <- Wi[k]")
print rpy.r("A3")
print rpy.r("A2")
As I see it, the problem is, that the 'assign' command works only
either for scalars or vectors (one-dimensional arrays but not more-
dimensional arrays). I tried it for 2-dimensional arrays and the
result is a list whose components are vectors. Again, this is easy to
convert to a two-dimensional array but the point here is that one has
to do it.
Maybe there are people using R with python who have some more
experience. I would be interested how they solved this problem.
Thanks!
Frank
I use rpy on linux to call R functions. Works fine up to the following
problem: How to parse arrays (no vectors, that means 2-dimensional) to
R without much effort?
The following code solves the problem (in two different ways).
However, it seems to me that there might be a way to do it more
efficiently.
rpy.r.assign("N", N)
rpy.r("A2 <- array(1:N^2, dim=c(N,N))")
rpy.r("A3 <- array(1:N^2, dim=c(N,N))")
for i in range(N): # two alternative ways to parse
arrays
rpy.r.assign("Wi", W)
rpy.r.assign("i", i+1)
rpy.r("""for( j in 1:N ){
A2[i,j] <- Wi[j]}""")
for k in range(N):
rpy.r.assign("k", k+1)
rpy.r("A3[i,k] <- Wi[k]")
print rpy.r("A3")
print rpy.r("A2")
As I see it, the problem is, that the 'assign' command works only
either for scalars or vectors (one-dimensional arrays but not more-
dimensional arrays). I tried it for 2-dimensional arrays and the
result is a list whose components are vectors. Again, this is easy to
convert to a two-dimensional array but the point here is that one has
to do it.
Maybe there are people using R with python who have some more
experience. I would be interested how they solved this problem.
Thanks!
Frank