r - 使用 dist() 和 as.matrix() 时标记行和列名称

标签 r matrix dataframe distance

我想知道在使用 dist() 和 as.matrix() 时是否有一个特定的参数来输出一个包含所有行名称的表。这就是我的意思:

first=c('john', 'judy', 'jenny')
second=c(3,6,9)
third = c(2,4,6)
df = data.frame(first,second,third)

我有一个名为 df 的数据框:
 first second third
1  john      3     2
2  judy      6     4
3 jenny      9     6

这是我想要的输出:
      john       judy   jenny
john 0.000000 4.41588 8.831761
judy 4.415880 0.00000 4.415880
jenny 8.831761 4.41588 0.000000

这是我的代码:
df.dist=dist(df)
df.dist=as.matrix(df.dist, labels=TRUE)
df.dist

这是 R 给我的:
      1       2        3
1 0.000000 4.41588 8.831761
2 4.415880 0.00000 4.415880
3 8.831761 4.41588 0.000000

我想知道在比较不同的条目时是否有一个特定的函数或参数可以重命名列,还是我们只需要自己编写代码?

我在键入 ?as.matrix 时看到的另一件事是,有一个名为 dimnames 的参数,可让您输入列和行的名称列表。但我不知道这是否是个好主意,因为我的数据集有大约 100 多个条目。

任何帮助深表感谢。卡住了一段时间。

最佳答案

将这些名称添加为行和列名称只需一行代码:

df<-read.table(header=T,text='first second third
1 john      3     2
2 judy      6     4
3 jenny      9     6')

df.dist=dist(df)
df.dist=as.matrix(df.dist, labels=TRUE)
colnames(df.dist) <- rownames(df.dist) <- df[['first']] #this is the only line

> df.dist
          john    judy    jenny
john  0.000000 4.41588 8.831761
judy  4.415880 0.00000 4.415880
jenny 8.831761 4.41588 0.000000

dimnames 添加名称作为属性,因此您可能会更好地使用上述内容。

关于r - 使用 dist() 和 as.matrix() 时标记行和列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27114358/

相关文章:

r - 如何通过将行组合成列表来折叠小标题?

python - 两个 Pandas 数据帧的相关矩阵,具有 P 值

c++ - 如何计算 Eigen 库中稀疏矩阵的逆

python - 使用类似 SQL 的 IN 子句过滤 Pyspark DataFrame

r - 交互式图表中的订单栏

r - ggplot2 包含位图的自定义注释,具有反转的 y 比例

Python: reshape 具有多个索引的数据框

python - 计算DataFrame中的词频

r - R 中的两个表达式应该产生相同的答案,但它们没有

arrays - 如何获取矩阵列中最后一个非零值的数组?