我将如何输出二进制数据帧列表中任意两个1之间的最大欧几里得距离?

问题描述 投票:0回答:1

我正在尝试查找列表中多个数据帧中任何两个0之间的欧几里得距离。首先,我已经为列表中的每个数据帧输出了每个0的位置...

csvs <- list.files(pattern="*.csv")
csv <- lapply(csv, read.table)
pos_0 <- sapply(csv, function(x) which(t(x) == 1))

但是我不确定下一步将是什么。我已经尝试过使用dist包,但是我不知道这是否正确...

dist(position_of_1s, method = "euclidean", diag = TRUE, upper = TRUE, p = 2)

我得到错误

dist(position_of_1s,method =“ euclidean”,diag = TRUE,upper = TRUE,:(list)对象不能强制输入'double'类型错误)>

可以这样做吗?

我还在下面提供了可复制的示例:

set.seed(99)
mat_list1 <- matrix(sample(c(0,1), 400, prob=c(0.8,0.2), replace=TRUE), nrow = 20)
df1 <- data.frame(mat_list1)

set.seed(123)
mat_list2 <- matrix(sample(c(0,1), 400, prob=c(0.8,0.2), replace=TRUE), nrow = 20)
df2 <- data.frame(mat_list2)

df_list <- list(df1, df2)

position_of_1s <- sapply(df_list, function(x) which(t(x) == 1))
dist(position_of_1s, method = "euclidean", diag = TRUE, upper = TRUE, p = 2)

我正在尝试查找列表中多个数据帧中任何两个0之间的欧几里得距离。首先,我已经为列表中的每个数据帧输出了每个0的位置... csvs

r list dataframe distance euclidean-distance
1个回答
0
投票

尽管我不确定为什么,但这似乎可行。我只是镜像了Distance Matrix Computation Documentation中的示例之一。希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.