我想做以下事情,但不知道怎么做(对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)发布于 2018-10-16 15:41:17
df$LS=apply(df,1,function(x){
sum((values-x)^2)
})发布于 2018-10-16 16:00:22
如果您没有大量的列,也可以尝试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)https://stackoverflow.com/questions/52830206
复制相似问题