我知道这可能是一个非常简单的问题,但是我是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
>
因此,这将产生结果(假设我的函数会将第1列中的值乘以-1):
> a.transformed
[,1] [,2]
[1,] -30 1
[2,] 40 0
[3,] -50 1
[4,] 60 0
我认为这暗示了apply()函数,但我似乎无法使if()正常工作!帮助!!
您可以使用[
运算符进行逻辑比较,然后使用[<-
运算符对子集进行替换并替换相关值...
# 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
我建议您阅读介绍性文字,因为这是R中一些相当基本的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句