小编Wol*_*ker的帖子

通常禁用矩阵的维度下降?

众所周知,如果列的行或行维度为1,则R会尝试将矩阵减少为向量.可以通过使用该drop=F命令来防止维度的自动删除.

但是,我目前正在编写一个大型R包,并且需要在我的代码中禁用几百次的维度丢弃,因此我必须手动查找这些位置并添加drop=F 数百次.

因此,我想知道是否有任何选项或可能通常禁用R中矩阵的维数下降?

r matrix

26
推荐指数
1
解决办法
1426
查看次数

在R中有效地复制矩阵

我有一个矩阵,并寻找一种有效的方法来复制它n次(其中n是数据集中观察的数量).例如,如果我有一个矩阵A.

A <- matrix(1:15, nrow=3)

然后我想要一个表格的输出

rbind(A, A, A, ...) #n times.

显然,有许多方法来构造这样的大矩阵,例如使用for循环apply或类似的函数.然而,对"矩阵复制 - 函数"的调用发生在我的优化算法的核心,在我的程序的一次运行中它被称为数万次.因此,循环,应用类型的函数和类似的东西都不够有效.(这样的解决方案基本上意味着n上的循环执行了数万次,这显然是低效的.)我已经尝试使用普通rep函数,但还没有找到一种方法来排列rep矩阵的输出所需格式.

该解决方案 do.call("rbind", replicate(n, A, simplify=F)) 效率太低,因为rbind在这种情况下经常使用.(然后,我的程序总运行时间的大约30%用于执行rbinds.)

有谁知道更好的解决方案?

replication r matrix

14
推荐指数
2
解决办法
1万
查看次数

如何在Windows上找出哪个.c文件包含R内部的.c功能?

我想查看R match.call函数的源代码.由于它是一个内部函数,我下载了R源代码,转到./src/main/names.c并寻找match.call那里.

因此,我发现调用了相应的.c函数do_matchcall.好的,但是如何找出./src/main/中的几十个.c文件中包含哪些功能do_matchcall

顺便说一句,我正在使用Windows机器,以防万一.

windows r function internals

14
推荐指数
3
解决办法
721
查看次数

将函数参数传递给其他函数本身的参数

假设我有一个外部函数,它有一个数字参数和一个函数本身的参数(内部函数).如何将外部函数的numeric参数的值作为参数传递给内部函数?考虑这个玩具示例:

innerfun <- function(M){
 1:M
}

outerfun <- function(x, fun){
 x * fun
}

outerfun(x = 3, fun = innerfun(M = 3)) ## works
outerfun(x = 3, fun = innerfun(M = x)) ## error because innerfun can't find 'x'
outerfun(x = 3, fun = innerfun(M = get("x"))) ## doesn't work either...
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是在外部函数的参数被评估时调用innerfun,在内部函数调用中使用那些outerfun-arguments.任何想法或建议?

arguments r function

2
推荐指数
1
解决办法
2204
查看次数

标签 统计

r ×4

function ×2

matrix ×2

arguments ×1

internals ×1

replication ×1

windows ×1