我对 R 真的很陌生,并试图解决一个对我来说具有挑战性的问题。
我有一个 .csv 文件,其中包含 22.388 行以逗号分隔的整数。我想分别找到每一行的整数对的所有可能组合,并将它们逐对列出,这样我就可以将它们直观地表示为簇。
我已经尝试combinat
为 R 安装包,但我似乎无法解决问题。
我的文件中的一个例子是
2 13
2 8 6
应该以这样的对的可能组合列出。
2, 13
2, 8
2, 6
8, 6
我对 R 真的很陌生,并试图解决一个对我来说具有挑战性的问题。
我有一个 .csv 文件,其中包含 22.388 行以逗号分隔的整数。我想分别找到每一行的整数对的所有可能组合,并将它们逐对列出,这样我就可以将它们直观地表示为簇。
我已经尝试combinat
为 R 安装包,但我似乎无法解决问题。
我的文件中的一个例子是
2 13
2 8 6
应该以这样的对的可能组合列出。
2, 13
2, 8
2, 6
8, 6
combn
给出向量元素的组合. paste
组合在一起apply
:
x <- c(2, 13)
y <- c(2, 8, 6)
apply(combn(x, 2), 2, paste, collapse=' ')
[1] "2 13"
循环这些:
unlist(sapply(list(x, y), function(x) apply(combn(x, 2), 2, paste, collapse=' ')))
## [1] "2 13" "2 8" "2 6" "8 6"
示例输入 - 替换textConnection(...)
为您的 csv 文件名。
csv <- textConnection("2,13
2,8,6")
这会将输入读入值列表:
input.lines <- readLines(csv)
input.values <- strsplit(input.lines, ',')
这将创建一个嵌套的对列表:
pairs <- lapply(input.values, combn, 2, simplify = FALSE)
这将所有内容放在一个很好的整数矩阵中:
pairs.mat <- matrix(as.integer(unlist(pairs)), ncol = 2, byrow = TRUE)
pairs.mat
# [,1] [,2]
# [1,] 2 13
# [2,] 2 8
# [3,] 2 6
# [4,] 8 6