编写一个函数,用于计算具有条件的数据框架的度量

时间:2014-01-01 18:14:02

标签: r

考虑具有以下性质的数据框架:

 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")

1 个答案:

答案 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