为R

时间:2017-12-08 22:31:37

标签: r

我正在尝试搜索以找到我的问题的解决方案,但我失败了,所以我在这里写。目前我在R中创建了大量的函数,每个脚本(7个脚本)的代码大约500行,以标准化的形式生成计算输出:

    >getFunction1(Key_ID)
#output
              calc1    calc2
category1       0.00     0.3
category2       0.06     0.2
category3       0.00     0.3

>getFunction2(Key_ID)
#output
              calc1    calc2
category1       0.10     0.1
category2       0.02     0.3
category3       0.01     0.3
(...)
>getFunction7(Key_ID)
#output
              calc1    calc2
category1       0.20     0.15
category2       0.04     0.4
category3       0.02     0.35

从结构的角度来看,7个脚本中的设计函数是相同的,但是根据函数的类别(特定用例)和(在脚本内部)计算类别来控制不同的计算。一切都运行得很完美,但是我无法创建一个连贯的表来存储来自所有getFunction1-7(Key_ID)的计算,其表格形式如下:

Key_ID|Name_Function(refering to use case)|Category(whithin the function)|Cal1|Cal2|

Key_ID是至关重要的部分,因为这是允许在数据库中加入新计算的ID。我不能简单地创建像:

这样的tabelaric结构
tableFunction1 <- as.data.frame(getFunction1(Key_ID)) 

原因取决于Key_ID我可以根据计算的主题收到不同的分数,因此Key_ID引用不同属性的不同对象包含在计算中。

你有没有遇到过这样的问题?到目前为止对我有什么建议吗? 非常感谢任何人。 亚历山德拉

1 个答案:

答案 0 :(得分:0)

如果每个函数的输出是包含类别和计算的数据框,则需要一种方法来添加KEY_ID和生成计算的函数的名称。由于OP不包括所讨论的任何函数的逻辑,我们假设当前输出是包含列categorycalc1calc2的数据帧。

首先,由于KEY_ID作为参数传递给七个函数中的每一个,因此可以在包含该值的输出数据框中创建一个列。

# assuming output frame has already been created, add id column
# by using rep() to repeat the value of the KEY_ID argument
output$id <- rep(KEY_ID,nrow(output))

其次,您需要在输出数据框中将当前函数的名称添加为列。这可以通过match.call()来完成。

# add name of current function to output data frame 
output$name_function <- rep(match.call()[[1]],nrow(output))