m*****n 发帖数: 3575 | 1 一个简单问题——把矩阵某一列刷成零
--------------------------------------
#先做个矩阵
A = matrix(1:10, ncol=2)
#现在将它的第二列刷成零
A[,2]=0
#检查一下
A
#还原
A = matrix(1:10, ncol=2)
======================================
我想把这种功能固化进一个函数里,从广义上说是对数据的一部分进行修改
--------------------------------------
zero_col <- function(data, coln){data[,coln]=0; return(data)}
#应用此函数
zero_col(A,2)
#再检查A是否被修改了
A
======================================
这样会出来两个结果,改的只是函数里面的data,而不是全局变量A
那全局变量如何改?有个"<<-"是改全局变量的
--------------------------------------
zero_col <- function(data, coln){data[,coln] <<- 0}
zero_col(A,2)
======================================
然后这个函数可耻的语法错误了
原来`<<-`符号只能赋值,不能改写
R作为大数据的利器,可真厉害啊! | d******c 发帖数: 2407 | 2 <- 是一个函数,在data[,coln] <- 0 里实际调用的是另一个matrix为此定义的函数,
而不是常规<-
<<-只替代常规<-
解决办法很多,先用<-,然后data <<- data,或者不用全局变量而是在函数外面覆盖
你的值
凡是这种局部修改,实际上copy已经发生了,<<-就算能用,也没有减少copy 的次数,
所以copy也没有性能损失。
R现在好像没宣传是大数据利器,主要是包多,用起来简单而已。python吹的比较多。
对R语法的抱怨不稀奇,历史悠久了。 |
|