如何将read.table的输出转换为dist将正确解释的向量向量?
我试图准备一个如何将read.table的输出转换为dist将正确解释的向量向量?,r,R,我试图准备一个dist结构,用于R中的一个集群库。输入是一个包含固定大小整数向量的文件。这是一个示例输入,尽管实际输入的每行中有7列以上 54540,22060,52234,49984,34093,16412,46758 47075,41863,26267,8577,45153,6133,31558 33741,50895,45860,49942,47074,30793,10483 24437,5884,44081,34891,41438,23705,30392 28575,50826,3672
dist
结构,用于R中的一个集群库。输入是一个包含固定大小整数向量的文件。这是一个示例输入,尽管实际输入的每行中有7列以上
54540,22060,52234,49984,34093,16412,46758
47075,41863,26267,8577,45153,6133,31558
33741,50895,45860,49942,47074,30793,10483
24437,5884,44081,34891,41438,23705,30392
28575,50826,36723,27807,28152,31804,3303
12936,26572,5576,1758,5484,12165,19950
2086,33345,4810,15722,594,34,15562
19701,46650,38306,33724,24992,55188,53023
我想读入它们,让R将它们解释为向量,然后将向量传递给myfun
,以计算编辑距离作为距离度量。
但是,数据
似乎没有适当的格式,因此使用不正确的参数调用了myfun
我目前有以下代码
library(cluster)
library(proxy)
myfun <- function(x,y) {
numDiffs <- 0;
for (i in x) {
if (x[i] != y[i])
numDiffs <- numDiffs + 1;
}
return(numDiffs);
}
summary(pr_DB)
pr_DB$set_entry(FUN = myfun, names = c("myfun", "vectorham"))
pr_DB$get_entry("MYFUN")
data <- read.table("Sample.txt", header=FALSE, sep=",")
x <- dist(x = data, method = "MYFUN")
库(集群)
图书馆(代理)
myfun问题在于(i in x){
的行。我想你的意思是(i in seq_沿(x)){
的行。无论如何,试着用这个代替:
myfun <- function(x,y) sum(x != y)
我认为这是正确的。问题在于(I in x){
的行。我想你的意思是(I in seq_沿(x)){
。无论如何,试着用这个代替:
myfun <- function(x,y) sum(x != y)
我认为这是正确的。这有两个问题:
矩阵实际上与向量向量没有任何区别。只需将行向量称为数据[rowNum,]。此外,“dist结构”只是一个矩阵。与此相关的问题如下:
矩阵实际上与向量向量没有任何区别。只需将行向量称为数据[rowNum],而且,“dist结构”就是矩阵。您可以将
myfun
定义为sum(x!=y)
。您可以将myfun
定义为sum(x!=y)
。我的向量是固定长度的。不过我会先试试费迪南德的答案。myfun
确实会被调用。他使用的是proxy::dist
而不是stats::dist
。我的向量是固定长度的。不过我会先试试费迪南德的答案。myfun
确实会被调用。他使用的是proxy::dist
而不是stats::dist>
。表面上,此解决方案消除了错误。但是,R似乎仍然认为总共有10多个项目需要群集,即使我的小示例文件仅包含10个项目。表面上,此解决方案消除了错误。但是,R似乎仍然认为总共有10多个项目需要群集尽管我的小样本文件只包含10项。
data <- read.table(header=FALSE, sep=",", text="
54540,22060,52234,49984,34093,16412,46758
47075,41863,26267,8577,45153,6133,31558
33741,50895,45860,49942,47074,30793,10483
24437,5884,44081,34891,41438,23705,30392
28575,50826,36723,27807,28152,31804,3303
12936,26572,5576,1758,5484,12165,19950
2086,33345,4810,15722,594,34,15562
19701,46650,38306,33724,24992,55188,53023
")
library(cluster)
library(proxy)
myfun <- function(x,y) sum(x != y)
summary(pr_DB)
pr_DB$set_entry(FUN = myfun, names = c("myfun", "vectorham"))
pr_DB$get_entry("MYFUN")
x <- dist(x = data, method = "MYFUN")
> x
1 2 3 4 5 6 7
2 7
3 7 7
4 7 7 7
5 7 7 7 7
6 7 7 7 7 7
7 7 7 7 7 7 7
8 7 7 7 7 7 7 7
> data
V1 V2 V3 V4 V5 V6 V7
1 54540 22060 52234 49984 34093 16412 46758
2 47075 41863 26267 8577 45153 6133 31558
3 33741 50895 45860 49942 47074 30793 10483
4 24437 5884 44081 34891 41438 23705 30392
5 28575 50826 36723 27807 28152 31804 3303
6 12936 26572 5576 1758 5484 12165 19950
7 2086 33345 4810 15722 594 34 15562
8 19701 46650 38306 33724 24992 55188 53023