jxn
我想在数组名(或matrix名)中使用变量,例如
y=(1,1,1,1,0,0,0,0,2,2,2,2)
要实现x_1=(1,1,1,1,);x_2=(0,0,0,0);x_3=(2,2,2,2)
我这样写code
y=(1,1,1,1,0,0,0,0,2,2,2,2)
for (i in 1:3)
{
x_i=y[i:i+3]
}
但是不行
请指教。谢谢了
longoR
用二维数组不就行了?
y=c(1,1,1,1,0,0,0,0,2,2,2,2)
x=matrix(y,4,3)
x[,1]
x[,2]
x[,3]
anning189
> y=c(1,1,1,1,0,0,0,0,2,2,2,2)
> y
[1] 1 1 1 1 0 0 0 0 2 2 2 2
> x=array(y,c(4,3))
> x
[,1] [,2] [,3]
[1,] 1 0 2
[2,] 1 0 2
[3,] 1 0 2
[4,] 1 0 2
> dim(y)=c(4,3)
> y
[,1] [,2] [,3]
[1,] 1 0 2
[2,] 1 0 2
[3,] 1 0 2
[4,] 1 0 2
jxn
谢谢俩位答复
> y1=c(1,1,1,1,0,0,0,0,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5)
> dim(y1)=c(4,6)
> y1
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 0 2 3 4 5
[2,] 1 0 2 3 4 5
[3,] 1 0 2 3 4 5
[4,] 1 0 2 3 4 5
> y1=t(y1)
> y1
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 0 0 0 0
[3,] 2 2 2 2
[4,] 3 3 3 3
[5,] 4 4 4 4
[6,] 5 5 5 5
我其实是想把y1变成2个matrix,
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 0 0 0 0
[3,] 2 2 2 2
[,1] [,2] [,3] [,4]
[1,] 3 3 3 3
[2,] 4 4 4 4
[3,] 5 5 5 5
当然实际的数据是很大,y1 有176个数,要变成11个matrix,每个4*4
anning189
> y=c(1,1,2,2,3,3,4,4,5,5,6,6)
> y
[1] 1 1 2 2 3 3 4 4 5 5 6 6
> dim(y)=c(2,2,3)
> y
, , 1
[,1] [,2]
[1,] 1 2
[2,] 1 2
, , 2
[,1] [,2]
[1,] 3 4
[2,] 3 4
, , 3
[,1] [,2]
[1,] 5 6
[2,] 5 6
> y[,,1]
[,1] [,2]
[1,] 1 2
[2,] 1 2
> y[,,2]
[,1] [,2]
[1,] 3 4
[2,] 3 4
> y[,,3]
[,1] [,2]
[1,] 5 6
[2,] 5 6
jxn
谢谢anning189,
我是需要调用每个子matrix 去运行一个程序,而y[,,j]不是matrix,如果令x=y[,,j],就需要让x循环,
还有其他办法吗
谢谢!
yihui
按照楼主最初的意思,如果要产生x_1 x_2 x_3三个变量,做法应该是这样的:
<br />
y=(1,1,1,1,0,0,0,0,2,2,2,2)<br />
for (i in 1:3)<br />
{<br />
assign(paste('x_', i, sep=""), y[(4*i-3):(4*i)])<br />
}
你的代码有两处问题,看来是相当地想当然,没有认真看过R语法。第一,循环中x_i不会变成x_1 x_2 x_3,貌似现在还没有哪门语言能有如此高级的“替换”,因此我用了assign来生成变量名并赋值;第二,你的y取得不对,数列的位置没有想清楚,i到i+3满足你的条件么?1:4, 2:5, 3:6,这显然不是你想要的y值的位置,你要取的y值位置在(4*i-3):(4*i),1:4, 5:8, 9:12,而且,你的i:i+3还有一个问题就是运算符的优先级别问题,":"会在"+"之前运算,那么你这个表达式的结果最终只是三个数字:4, 5, 6,而不是序列,要保证加法先算的话,就得加括号。
yihui
[quote]引用第5楼jxn于2007-04-13 10:38发表的“”:
我是需要调用每个子matrix 去运行一个程序,而y[,,j]不是matrix,如果令x=y[,,j],就需要让x循环,
还有其他办法吗[/quote]
干嘛要费这劲把y[,,j]赋给x(而且赋值不需要循环),y[,,j]的确已经就是matrix了。
> class(array(1:176,dim=c(4,4,11))[,,1])
[1] "matrix"