计算行明智最小二乘法

时间:2018-10-16 07:36:01

标签: r

我想做以下事情,但不确定如何做(R编程的新手!)

我想计算数值矢量(“值”)与数据帧中的每一行(“ df”)之间的最小二乘测量值(如下面的代码所定义)。

我想出了一种方法,要求我手动更改行(请参见“ dat”)。

如何让R从每一行计算LS并为df创建一个新列,用于存储对应行的LS值?

(我的数据框很大,因此基本上无法手动完成此操作)

# Dataframe

df <-data.frame(col1=c(1:10),
                   col2=c(2:11),
                   col3=c(3:12))

# num vector 
values <- c(0.2, 0.5, 1.2)

#Calculate the least squares  
dat <- df[1,1:3]
LS<- sum((values-dat)^2)

2 个答案:

答案 0 :(得分:0)

df$LS=apply(df,1,function(x){
  sum((values-x)^2)
})

答案 1 :(得分:0)

如果您没有大量的列,也可以尝试使用dplyr这样的解决方案:

df %>%
  rowwise() %>%
  mutate(temp1 = (values[1]-col1)^2,
         temp2 = (values[2]-col2)^2,
         temp3 = (values[3]-col3)^2,
         LS = sum(temp1, temp2, temp3)) %>%
  select(-temp1, -temp2, -temp3)