我只是简单地构建了您的代码。希望这会有所帮助!
#sample data
df <- data.frame(X1=c(0,0,0,0,-1,1),
X2=c(3,0,1,1,0,1),
X3=c(0,0,3,2,1,1),
Y=c('Red','Red','Red','Green','Green','Red'))
#standardize attributes
color <- df[,ncol(df)] # save 'Y' a in separate variable as we don't want to standardize it
df_minus_Y <- df[,-ncol(df)]
maxs <- apply(df_minus_Y, 2, max) #maximum of each column
mins <- apply(df_minus_Y, 2, min) #minimum of each column
standardized.df_minus_Y <- as.data.frame(scale(df_minus_Y, scale = maxs - mins, center = mins))
#split data in train/ test (in reality it should be done at random but here I just tried to imitate your example)
train_idx = 1:4
#train dataset
train_data <- standardized.df_minus_Y[train_idx,]
train_color <- color[train_idx]
#test dataset
test_data <- standardized.df_minus_Y[-train_idx,]
test_color <- color[-train_idx]
#knn model
library(class)
set.seed(123)
predicted_color <- knn(train_data,test_data,train_color,k=1)
#accuracy
mean(test_color == predicted_color)