我想做以下事情,但不确定如何做(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)
答案 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)