考虑具有以下性质的数据框架:
x y z label
1 3 2 a
2 4 4 b
3 8 5 c
4 5 6 a
5 1 8 f
我需要编写一个函数来选择一个给定的观察值,并使用该初始观察作为参考点来计算所有观察的欧几里德度量,条件是观察是给定标记的一部分。
所以调用函数看起来有点像这样:
f(reference obs, label="letter")
答案 0 :(得分:0)
df <- read.table(sep=" ", header=T, text="
x y z label
1 3 2 a
2 4 4 b
3 8 5 c
4 5 6 a
5 1 8 f")
f <- function(refObs, label) {
dist <- vector()
for (i in which(df$label==label))
dist <- c(dist, sqrt(sum((refObs - df[i,1:3])^2)))
return(dist)
}
f(c(1,3,2), "a")
# [1] 0.000000 5.385165