根据其他列(R)中的值对向量的一列应用变换

根据其他列(R)中的值对向量的一列应用变换,r,matrix,R,Matrix,我知道这可能是一个非常简单的问题,但我是R的新手,已经尝试了好几个小时了,没有运气 仅当第二列的值为1时,我想对下列矩阵第一列的每个元素应用转换 > a<-matrix(c(30,40,50,60,1,0,1,0),nrow=4,ncol=2) > a [,1] [,2] [1,] 30 1 [2,] 40 0 [3,] 50 1 [4,] 60 0 > 我认为这意味着apply()函数,但我似乎无法让if()工作!救

我知道这可能是一个非常简单的问题,但我是R的新手,已经尝试了好几个小时了,没有运气

仅当第二列的值为1时,我想对下列矩阵第一列的每个元素应用转换

> a<-matrix(c(30,40,50,60,1,0,1,0),nrow=4,ncol=2)
> a
     [,1] [,2]
[1,]   30    1
[2,]   40    0
[3,]   50    1
[4,]   60    0
> 

我认为这意味着apply()函数,但我似乎无法让if()工作!救命

您可以使用
[
运算符进行逻辑比较,然后使用
ifelse

a[,1]<-ifelse(a[,2]==1,a[,1]*-1,a[,1])
> a
     [,1] [,2]
[1,]  -30    1
[2,]   40    0
[3,]  -50    1
[4,]   60    0
a[,1]a
[,1] [,2]
[1,]  -30    1
[2,]   40    0
[3,]  -50    1
[4,]   60    0

谢谢(我错过了“==”部分!)因为你是新来的,你可能想阅读网站的各部分来帮助你充分利用它。如果一个答案确实解决了你的问题,你可能想考虑一下投票和/或标记它是被接受的来显示问题已经被回答了。答案不可靠。你没有义务这么做,但这有助于保持网站上没有未回答的问题,并奖励那些花时间解决你问题的人。
#  rows we want to change
id <- a[,2] == 1
a[id , 1 ] <- a[ id , 1 ] * -1
a
#     [,1] [,2]
#[1,]  -30    1
#[2,]   40    0
#[3,]  -50    1
#[4,]   60    0
a[,1]<-ifelse(a[,2]==1,a[,1]*-1,a[,1])
> a
     [,1] [,2]
[1,]  -30    1
[2,]   40    0
[3,]  -50    1
[4,]   60    0