根据其他列(R)中的值对向量的一列应用变换
我知道这可能是一个非常简单的问题,但我是R的新手,已经尝试了好几个小时了,没有运气 仅当第二列的值为1时,我想对下列矩阵第一列的每个元素应用转换根据其他列(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()工作!救
> 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