library(openxlsx) dat<-read.xlsx("http://kanggc.iptime.org/book/data/macro-simple-e.xlsx") A<-as.matrix(dat) H<-matrix(c(0,200,0,100,40,100), nrow=6) H X<-t(solve(A)%*%H) XV<-as.vector(X) names(XV)<-c("Y=","C=","Yd=","T=","I=","G=") XV IH<-matrix(c(0,200,0,100,80,100), nrow=6) IX<-t(solve(A)%*%IH) IXV<-as.vector(IX) names(IXV)<-c("Y=","C=","Yd=","T=","I=","G=") IXV IM<-(IXV[1]-X[1,1])/(IXV[5]-H[5,1]) names(IM)<-c("dY/dI=") IM GH<-matrix(c(0,200,0,100,40,200), nrow=6) GX<-t(solve(A)%*%GH) GXV<-as.vector(GX) names(GXV)<-c("Y=","C=","Yd=","T=","I=","G=") GXV GM<-(GXV[1]-X[1,1])/(GXV[6]-H[6,1]) names(GM)<-c("dY/dG=") GM