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) {
d <- vector()
for (i in which(df$label==label))
d <- c(d, dist(rbind (refObs, df[i,1:dim]) , method ="euclidean"))
return(dist)
}
Проблема заключается в том, что, когда я называю эту функцию с тусклым = 1 я иногда получаю «Оператор $ недействительна для атомных векторов ». Есть ли способ вызвать столбцы из фреймов данных, которые не подведут меня? Чтобы быть более конкретным: могу ли я вызвать функцию f, назначающую пустые метки?
Возможно, что вы испытываете [это] (http://stackoverflow.com/q/7938883/324364). – joran
Я должен отметить, что это просто предположение, поскольку ваш пример не воспроизводится. Мало того, что это не воспроизводимо, вы даже не указали информацию о том, где именно произошла ошибка. – joran
Я отметил это как дубликат связанного вопроса joran, который должен иметь хороший ответ о том, почему это происходит. Хотя я считаю, что код лучше всего реорганизован без цикла for (что я не уверен на 100%). –