我想知道在使用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的参数,可以让你输入cols和rows的名字列表。但我不知道这是不是一个好主意,因为我的数据集有大约100多个条目。
非常感谢任何帮助。被困了一会儿。
答案 0 :(得分: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
dimnames将名称添加为属性,因此您可能会更好地使用上述内容。
答案 1 :(得分:0)
您还可以将第一列设置为数据框rownames
,然后使用dist
:
rownames(df) <- df$first
as.matrix(dist(df[-1]))
# john judy jenny
#john 0.000000 3.605551 7.211103
#judy 3.605551 0.000000 3.605551
#jenny 7.211103 3.605551 0.000000