【问题标题】:How to create these functions in R?如何在 R 中创建这些函数?
【发布时间】:2013-12-30 12:30:52
【问题描述】:

我有两个数学公式需要创建为 R 函数,然后在我的数据上运行它们。

首先让我向您展示我的数据的头部,我将其命名为“data_1”

  sex age seca1 chad1  DL alog1 dig1 scifirst1 crimetech1
1   F  20  1754  1750 175    95   95       432        429
2   F  19  1594  1596 158    56   55       420        417
3   F  20  1556  1558 156    74   72       435        437
4   F  18  1648  1640 167    67   65       431        434
5   F  19  1780  1780 178    99   67       433        431
6   F  19  1610  1620 165    56   54       423        425

现在让我们看看公式和我在 r 上创建函数的尝试:

1)第一个公式(f1):

第一个公式(可通过this link访问):

这是我创建第一个公式时所做的:

f1 <- function(x, y) {sqrt(sum((x - y) ^ 2) / 2 / length(x))}

因为我需要在 data_1$alog1data_1$dig1 上运行 f1... 这就是我所做的:

f1(data_1$alog1, data_1$dig1)

给出:4.3

现在的问题是:我是否正确创建了函数?它应该只给我一个价值吗?

2)第二式(f2):

第二个函数是创建一个数学公式,其中第一个函数被替换。这是公式-->(关注this link):

"f1" 在第二个公式中以红色显示,应该是第一个创建的函数(第一个公式)。

接下来,这是我为实现第二个公式所做的:

f2 <- function(x, y){(f1 / ((x + y) / 2)) * 100}

但是,当我在 data_1$alog1data_1$dig1 上运行它来计算这些数据的误差变异系数时,我得到:

> f2(data_1$alog1, data_1$dig1)
Error in f1/((x + y)/2) : non-numeric argument to binary operator

谁能评论创建函数所执行的步骤以及我在“alog1 vs dig1”上运行函数的方式?

【问题讨论】:

  • 我已经在回答您的原始问题时回答了所有这些问题。也许你没有看到我的更新?仔细看,应该都在那里。 stackoverflow.com/questions/20824792/…
  • 请修正问题标题 - 它没有说明任何用处。

标签: r function formula


【解决方案1】:

如果x 是一个向量,那么sum(x) 是一个标量。要获得累积总和,请使用cumsum(x)

f1 <- function(x, y) {sqrt(cumsum((x - y) ^ 2) / 2 / length(x))}
f1(data_1$alog1, data_1$dig1)

返回

[1] 0.0000000 0.2886751 0.6454972 0.8660254 9.2781104 9.2960565    

而不是简单地返回最后一个值。 在第二个函数定义中,您忘记了f1(x, y) 的函数:

f2 <- function(x, y) {f1(x, y) / ((x + y) / 2) * 100}
f2(data_1$alog1, data_1$dig1)
[1]  0.0000000  0.5201354  0.8842428  1.3121597 11.1784463 16.9019209

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-10
    • 2017-04-20
    • 2019-02-11
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多