与转置数据处理中的R
我有这样一些功能:与转置数据处理中的R
myf = function(x) { # many similar statements involving indexing x
do1(x[, indexfunc1()])
do2(x[, indexfunc1()])
do3(x[, indexfunc1()])
do4(x[, indexfunc1()])
do5(x[, indexfunc1()])
}
在所有这些功能,我需要提取的列或行的x ,而这些功能在一些循环使用。 问题是我们有时候也有数据换位的 格式,所以这意味着对于这些数据我们必须得到t(x)。 由于 这些矩阵通常很大,所以这是非常无效和非常耗时的。
有没有一个聪明的方法来处理这个问题?这将是非常烦人的 必须手动更改代码。
回答:
嗯,首先,如果你的doX
功能预计矩阵的转置,你会在某个地方打电话t
,例如
do1(t(x[indexfunc(),])))
那么你的选择是:
- 转置
x
一次在顶部 - 转置在每个
doX
调用 - 重写
doX
函数,以便它们采用可选的isTranspose
参数。
选项3将是最多的工作,但也是最有效的。使用选项2的情况是有意义的,如果x
是巨大的,但是每次只选择少量的行/列。在这种情况下,你可以做这样的事情:
matrixSelect<-function(x,subset,dim=1){ if(dim==1)
t(x[subset,])
else
x[,subset]
}
,然后写
myf = function(x,dim=2) { # many similar statements involving indexing x
do1(matrixSelect(x,indexfunc1(),dim)
# etc
}
以上是 与转置数据处理中的R 的全部内容, 来源链接: utcz.com/qa/260541.html