为什么R函数vapply有时返回原子向量,有时返回矩阵?

时间:2016-05-08 21:20:12

标签: r matrix vector

我继承了同事的代码,现在我正在努力解决最近几天出现的一些问题(很遗憾,我没有时间去处理所有代码,我正在以实用的方式处理每个错误尽可能)。特别是,一个bug必须使程序至少与paramaters一起工作(当一个人应该足够时)。

var_pre <- vapply(1:repetitions, function (i) {...}, numeric(parameters))

这个vapply似乎是bug的来源。 vapply中的函数产生n个长度=参数的原子向量(其中n = 重复)。如果参数= 1,则vapply将生成长度为重复原子向量

例如,如果参数= 1且重复= 3,则函数将产生[1] 1,[1] 2,[1] 3.并且var_pre将存储

[1] 1 2 3.

但是,如果参数&gt; 1,输出将是矩阵,其行数与参数相同,列数等于重复

例如,如果参数= 2且重复= 3,则函数将产生[1] 1 2,[1] 3 4,[1] 5 6.并且var_pre将存储矩阵

    [,1] [,2] [,3]
[1,]  1    3    5
[2,]  2    4    6

由于在代码中进一步处理了var_pre,因此该问题会破坏程序的整个工作流程。我想以最干净的方式解决这个问题,而不会搞乱这个功能。我必须理解为什么vapply会产生不同类的结果。

对此有解释吗?

编辑:程序稍后使用矩阵形式。因此,当参数= 1且重复= 3时,我需要一个类似

的矩阵
     [,1] [,2] [,3]
[1,]   1    2    3

0 个答案:

没有答案