如何 select R 中数据集的某些行然后在函数中使用?
How to select certain rows of a data set in R to then use in a function?
我试图在 R 中的 iris
数据集中找到不同物种之间的马氏距离。我能够通过以下方式找到 setosa
和 versicolor
之间的距离代码:
library(HDMD)
#To get Mahalanobis distances between Setosa and Versicolor,
set.vers<-pairwise.mahalanobis(x=iris[1:100,1:4], grouping=iris[1:100,]$Species)
md= sqrt(set.vers$distance)
但是,我正在努力为 setosa
和 virginica
做同样的事情。我不确定如何 select 数据集的前 50 行和后 50 行(即没有任何 versicolor
数据)
这是一道基本的子集问题。您想要基于 Species
进行子集化,类似于(未测试)
ss <- iris[iris$Species %in% c("Setosa", "Virginica"), ]
pairwise.mahalanobis(x = ss, grouping = ss$Species)
您当然可以通过多种方式更改要比较的物种对。
这是一种获取 iris$Species
中所有级别与 combn
的组合并计算马氏距离的方法。
library(HDMD)
inx <- sapply(levels(iris$Species), function(l) which(iris$Species == l), simplify = FALSE)
inx <- combn(inx, 2, function(x) unlist(x), simplify = FALSE)
set.vers_all <- lapply(inx, function(i) {
pairwise.mahalanobis(x = iris[i, 1:4], grouping = droplevels(iris$Species[i]))
})
set.vers_all
我试图在 R 中的 iris
数据集中找到不同物种之间的马氏距离。我能够通过以下方式找到 setosa
和 versicolor
之间的距离代码:
library(HDMD)
#To get Mahalanobis distances between Setosa and Versicolor,
set.vers<-pairwise.mahalanobis(x=iris[1:100,1:4], grouping=iris[1:100,]$Species)
md= sqrt(set.vers$distance)
但是,我正在努力为 setosa
和 virginica
做同样的事情。我不确定如何 select 数据集的前 50 行和后 50 行(即没有任何 versicolor
数据)
这是一道基本的子集问题。您想要基于 Species
进行子集化,类似于(未测试)
ss <- iris[iris$Species %in% c("Setosa", "Virginica"), ]
pairwise.mahalanobis(x = ss, grouping = ss$Species)
您当然可以通过多种方式更改要比较的物种对。
这是一种获取 iris$Species
中所有级别与 combn
的组合并计算马氏距离的方法。
library(HDMD)
inx <- sapply(levels(iris$Species), function(l) which(iris$Species == l), simplify = FALSE)
inx <- combn(inx, 2, function(x) unlist(x), simplify = FALSE)
set.vers_all <- lapply(inx, function(i) {
pairwise.mahalanobis(x = iris[i, 1:4], grouping = droplevels(iris$Species[i]))
})
set.vers_all