如何在每行2个向量中找到对并计算结果

时间:2013-02-04 14:05:49

标签: r grep system

我有一个带有2个向量的文本文件(我将其作为data.frame读取)作为示例。

x =c(1,2,1,7,5,8) ; y = c(1,2,1,8,4,8)

我希望找到2个向量之间的所有对。我目前正在写文件 并使用系统调用:

ans11 = system('grep "^1,1" | wc -l ') to get the result.

使用grep我使用

'grep "^1,1" | wc -l '  and I get a result of 2
'grep "^2,2" | wc -l '  and I get a result of 1
'grep "^8,8" | wc -l '  and I get a result of 1

如何使用R执行此操作?我会使用grep和wc但是在R中必须有一种方法来实现它。

1 个答案:

答案 0 :(得分:3)

这就是你想要的吗?

expand.grid(unique(x),unique(y))

编辑:由于您说计数,我假设您想知道每对发生了多少次。您可以按照以下方式执行此操作:

require(data.table)
dt <- data.table(expand.grid(x,y))
setkey(dt, "Var1", "Var2")
dt[, .N, by="Var1,Var2"]

#     Var1 Var2 N
#  1:    1    1 4
#  2:    1    2 2
#  3:    1    4 2
#  4:    1    8 4
#  5:    2    1 2
#  6:    2    2 1
#  7:    2    4 1
#  8:    2    8 2
#  9:    5    1 2
# 10:    5    2 1
# 11:    5    4 1
# 12:    5    8 2
# 13:    7    1 2
# 14:    7    2 1
# 15:    7    4 1
# 16:    7    8 2
# 17:    8    1 2
# 18:    8    2 1
# 19:    8    4 1
# 20:    8    8 2