求解数据表中每一行的线性方程

时间:2017-03-28 18:43:14

标签: r

我做了一些线性回归,我想预测超过一定值的时刻。

这意味着我有三列:

a= slope
b = intercept
c = target value

在我要计算的每一行上     solve(a,(c-b))

如何在不使用循环的情况下以高效的方式执行此操作(它是一个广泛的数据集)?

3 个答案:

答案 0 :(得分:1)

所以你基本上想要解决这个等式

c = a*x + b

每行x

这个非常简单的解决方案
x = (c-b)/a

这是R中的向量化操作。无需循环

dd <- data.frame(
   a = 1:5,
   b = -2:2,
   c = 10:14
)
transform(dd, solution=(c-b)/a)

#   a  b  c solution
# 1 1 -2 10     12.0
# 2 2 -1 11      6.0
# 3 3  0 12      4.0
# 4 4  1 13      3.0
# 5 5  2 14      2.4

答案 1 :(得分:1)

除了上述回复之外,您还可以使用mutate中的tidyverse功能。像这样:

library(magrittr)
library(tidyverse)

dataframe %<>% mutate(prediction=solve(a,(c-b))

在这个例子中,我们假设列'a','b'和'c'在一个名为'dataframe'的表中。然后,我们使用%<>%库中的magrittr函数来说“将后面的函数应用于数据框”。

答案 2 :(得分:0)

以下是使用Vectorize函数的简单方法:

solve_vec <- Vectorize(solve)
solve_vec(d$a, d$c - d$b)

> solve_vec(d$a, d$c - d$b)
[1] 12.0  6.0  4.0  3.0  2.4