我正在尝试搜索以找到我的问题的解决方案,但我失败了,所以我在这里写。目前我在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引用不同属性的不同对象包含在计算中。
你有没有遇到过这样的问题?到目前为止对我有什么建议吗? 非常感谢任何人。 亚历山德拉
答案 0 :(得分:0)
如果每个函数的输出是包含类别和计算的数据框,则需要一种方法来添加KEY_ID和生成计算的函数的名称。由于OP不包括所讨论的任何函数的逻辑,我们假设当前输出是包含列category
,calc1
和calc2
的数据帧。
首先,由于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))