1

我对 R 真的很陌生,并试图解决一个对我来说具有挑战性的问题。

我有一个 .csv 文件,其中包含 22.388 行以逗号分隔的整数。我想分别找到每一行的整数对的所有可能组合,并将它们逐对列出,这样我就可以将它们直观地表示为簇。

我已经尝试combinat为 R 安装包,但我似乎无法解决问题。

我的文件中的一个例子是

2 13

2 8 6

应该以这样的对的可能组合列出。

2, 13
2, 8
2, 6
8, 6

4

2 回答 2

0

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" 
于 2013-05-08T13:37:10.320 回答
0

示例输入 - 替换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
于 2013-05-08T13:48:46.467 回答