R中的多矩阵运算,基于矩阵名称的循环

时间:2014-03-04 12:08:37

标签: r for-loop matrix while-loop

我是新手R用户,他正在学习使用这种编码语言来处理研究中的数据问题。我试图通过查看子类中的专利来了解行业内的知识是如何发展的。到目前为止,我设法得到以下内容:

# kn.matrices<-with(patents, table(Class,year,firm))
# kn.ind <- with(patents, table(Class, year))

专利是我的数据文件,Subclass,app.yr和short.name为14列中的三列

# for (k in 1:37)  
# kn.firms = assign(paste("firm", k ,sep=''),kn.matrices[,,k]) 

有37家不同的公司(在真实数据集中,这里只有5家)

这给出了37个公司特定的和1个行业特定的2635乘29个矩阵(在真实数据集中)。所有公司特定的矩阵都称为firmk,k从1到37。

我想在每个公司特定的矩阵中执行许多操作(例如,比较app.yr't'中的数字与所有行中前3年的平均值),所以我正在寻找一种方法允许我循环每个名为firm1,firm2,firm3 ...,firm37的矩阵的操作,并生成具有一致命名的新矩阵,例如公司1。3年比较

希望我以适当的方式解决这个问题。任何帮助将不胜感激。

以下评论我试图添加一个可重复性最小的示例

  
    

年&LT; -C(1990,1991,1989,1992,1993,1991,1990,1990,1989,1993,1991,1992,1991,1991,1991,1990,1989,1991,1992,1992,1991, 1993)

  
     

公司&LT ;-( C( “一”, “一个”, “一”, “B”, “B”, “C”, “d”, “d”, “E”, “一”,” b”, “C”, “C”, “E”, “A”, “b”, “b”, “E”, “E”, “E”, “d”, “E”))

     

类&LT; -C(1900,2000,3000,7710,18000,19000,36000,115000,212000,215000,253600,383000,471000,594000)

这三个向量因此代表电子表格中的列,形成之前提到的“专利”矩阵。

1 个答案:

答案 0 :(得分:0)

看起来你已经有了一个包含所有数据的三维数组。您基本上可以将这38个矩阵全部堆叠在另一个上面。您不希望将其拆分为38个矩阵并使用循环。相反,您可以使用R的应用函数和提取函数。只需查看apply()系列的帮助主题,它就会告诉您如何做您想做的事情。以下是一些基本示例

的示例:

# returns the sums of all columns for all matrices
apply(kn.matrices, 3, colSums)

# extract the 5th row of all matrices
kn.matrices[5, , ]

# extract the 5th column of all matrices
kn.matrices[, 5, ]

# extract the 5th matrix
kn.matrices[, , 5]

# mean of 5th column for all matrices
colMeans(kn.matrices[, 5, ])