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

jas*_*ams 3 r distance matrix dataframe

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

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

我有这个名为df的数据框:

 first second third
1  john      3     2
2  judy      6     4
3 jenny      9     6
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出:

      john       judy   jenny
john 0.000000 4.41588 8.831761
judy 4.415880 0.00000 4.415880
jenny 8.831761 4.41588 0.000000
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

df.dist=dist(df)
df.dist=as.matrix(df.dist, labels=TRUE)
df.dist
Run Code Online (Sandbox Code Playgroud)

这就是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
Run Code Online (Sandbox Code Playgroud)

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

我输入的另一件事是?as.matrix是有一个名为dimnames的参数,可以让你输入cols和rows的名字列表.但我不知道这是不是一个好主意,因为我的数据集有大约100多个条目.

非常感谢任何帮助.被困了一会儿.

Lyz*_*deR 6

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

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
Run Code Online (Sandbox Code Playgroud)

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