1

我想执行以下操作,但不确定如何(R 编程非常新!)

我想计算数字向量('values')和数据框中的每一行('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)
4

2 回答 2

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)
于 2018-10-16T08:00:21.860 回答
0
df$LS=apply(df,1,function(x){
  sum((values-x)^2)
})
于 2018-10-16T07:41:16.857 回答