R里面如何写一个函数能改变别的变量的值

g
gooog
楼主 (北美华人网)
X <- matrix(c(1,2,3,4,5,6,7,8,9), nrow=3)    [,1] [,2] [,3] [1,]  1  4  7 [2,]  2  5  8 [3,]  3  6  9
> diag(X) <- 0 > X    [,1] [,2] [,3] [1,]  0  4  7 [2,]  2  0  8 [3,]  3  6  0
请问在c++里面有这样的类似diag(X) <- 0 语句 我们常见的是a = 0. 这样把值从右边赋给左边的变量。 这个diag(X) <- 0 是怎么实现的呢?
能自己写一个R 函数 m_add , 使得所有X的值都增加1吗? 比如m_add(X) <- 1 这样所有X的值都增加1.
please help!

C
Cumberbitch
这个楼主跟microsat真是异曲同工
h
hhxx89
厉害了
g
gokgs
不懂R,不过这些应该是任何一个语言的基本功能。
c
chop2004
不需要什么函数,X+1就是所有元素都+1
t
teddyao
lz是问c++还是问R呢? R的话,+1就直接加就行了吧 X = X + 1
g
gooog
不需要什么函数,X+1就是所有元素都+1
chop2004 发表于 2022-08-13 12:52

我是想用一个简单的例子。来询问,如何在R里面写这样的语句。
diag(X) = 1
等号左边是函数,右边是赋的值。
R里面没有类。 这个操作其实类似于c++ 里面的 X.diag = 1.

g
gooog
lz是问c++还是问R呢? R的话,+1就直接加就行了吧 X = X + 1
teddyao 发表于 2022-08-13 16:50

我想写成一个等式 等式左边是函数,右边是值。
diag(X) = 1
H
Hershel
你可以写一个replacement function “diag<-”=function(X, value){ for (i in 1:nrow(X)){x[i,i]=value} X } 然后就可以调用diag(X)=1了