R:迭代两列0和1列,得到一列0和1

时间:2016-04-11 16:41:29

标签: r if-statement matrix

矩阵:

   A   B
   0   1
   0   0
   1   0

我有一个设计矩阵,我的前两列是'A','B'填充0和1我需要将这两列替换为总结两者的一列,即。在一个新的总体列中,1将位于A和B中的任何一个为1且0为0的位置。

我的尝试如下:

  x <- vector("list", length(my_mat)) #empty vector
    for(i in 1:length(design[2])) #fill vector with column content
      ifelse(attempt[ ,1]==1|attempt[ ,2]==1, x[i]<-design[i], x[i]<-0) #in event that either A or B is 1 give x vector a 1 other wise give it a 0
  as.matrix(x)
  my_mat<-my_mat[ ,-c(1,2)] #get rid of first two columns
  my_mat<-cbind(my_mat, x) #summarise first two columns by binding the other new one

我的问题是我得到的矢量充满了NULL值,所以我做错了,因为它应该只是制作一个0和1的向量

注意我希望能够访问带有“$”注释的列但是我收到以下错误,因为原始数据不是数据框: 设计错误$ Culture_confirmed_TB:   $运算符对原子向量无效

1 个答案:

答案 0 :(得分:1)

如果原始数据是

tab <- data.frame(A = c(0L, 0L, 1L), B = c(1L, 0L, 0L))

然后添加新列可以这样实现:

tab$C <- (tab$A | tab$B) + 0
tab
#   A B C
# 1 0 1 1
# 2 0 0 0
# 3 1 0 1

如果数据是matrix

M <- cbind(A = c(0L, 0L, 1L), B = c(1L, 0L, 0L))

然后可以像这样添加新列

M <- cbind(M, C = M[,1] | M[,2])