删除表中的值及其对应的值

时间:2012-11-07 21:55:55

标签: r awk

在一个文件(1000列,2000行)中,每列都有一个旁边的另一列。类似的东西:

[,1] [,2] [,3] [,4] [,5] [,6]
3      3    4    4     4     6
6      5    2    2     5     1
9      1    3    5     4     1
2      5    6    4     8     5
6      1    5    2     3     1

我想删除那些相应值为1的值 结果:

[,1] [,3] [,5] 
3    4     4
6    2     8
2    3
     6
     5

1 个答案:

答案 0 :(得分:0)

为了回应@shellter所说的话,包括你在问题中尝试过的内容既有帮助又有礼貌。

以下是使用splitmapply完成此操作的简洁方法。

d <- read.table(text='3      3    4    4     4     6
6      5    2    2     5     1
9      1    3    5     4     1
2      5    6    4     8     5
6      1    5    2     3     1', header=FALSE)

cols <- split(as.list(d), rep(1:2, length.out=length(d)))
mapply(function(col1, col2) col1[col2 != 1], 
       cols[[1]], cols[[2]], SIMPLIFY=FALSE)

# $V1
# [1] 3 6 2
# 
# $V3
# [1] 4 2 3 6 5
# 
# $V5
# [1] 4 8