2012-02-23 75 views
1

这个问题比类似here更先进。约20绘制矩阵与R像data.frame

字符的预计量。当我在绘制东西data.frame,我这样做:

# t1 is a df 
> plot((q1*s1+q2*s2)/(s1+s2),data=t1) 

,但我可以重复使用这种形式的矩阵?

[最后工作MVO,谢谢!]

> M<-matrix(data=rnorm(30),ncol=2,dimnames=list(NULL,c('q1','q2'))) 
> plot(M) 
> x=1:dim(M)[1] 
> plot(x~q1/q2,data=data.frame(M),type='l') 

enter image description here

回答

1

您可以使用这个

with(data.frame(mymatrix), plot((q1*s1+q2*q2)/(s1+s2))) 

希望这有助于

+0

+1这工作,但为什么不是另一种方法,仍然在想。 MVO加入试用 - 我应该以不同的方式启动变种吗? – hhh 2012-02-23 12:50:58

+1

同样,公式方法只在您提供*有效公式时才起作用。 - 您需要绘制某些东西与其他东西(请注意我给出的示例中的“〜”符号)。只提供一个值并不是一个有效的公式,因为R不知道它是y还是x或者要对它进行绘图。 – 2012-02-23 12:53:16

1

那种绘制的(你在那里输入包括数据帧的列公式)仅适用于数据帧。

colnames(mymatrix)如果是q1s1等,那么就可以实现通过执行影响:

plot(myformula, data=data.frame(mymatrix)) 

即强迫矩阵到一个数据帧,然后使用公式。

更新

一个例子证明这个工程:

# construct a matrix 
> mymatrix <- array(runif(10*2),dim=c(10,2)) 
# give it column names X and Y 
> colnames(mymatrix)<-c('X','Y') 
> mymatrix 
       X   Y 
[1,] 0.07346608 0.81321578 
[2,] 0.09525474 0.17852467 
[3,] 0.81246522 0.45747972 
[4,] 0.01286714 0.82517127 
[5,] 0.77554012 0.87725725 
[6,] 0.71908435 0.71628493 
[7,] 0.13212848 0.67827601 
[8,] 0.65993809 0.01650703 
[9,] 0.11385161 0.99433644 
[10,] 0.22750439 0.45611635 
# plot Y vs X -- note you need to convert the matrix to a data frame first. 
> plot(Y~X,data.frame(mymatrix)) 
+0

啊,这是行不通的因为你给出的例子不起作用(t1是数据帧的那个例子) 最佳)。 – 2012-02-23 12:33:38

+1

我举了一个例子来展示我的解决方案。你的理由不是因为你给出的第一行代码作为例子('当我绘制data.frame之类的东西时,我喜欢')不起作用 - 它不是一个有效的公式。我只是在我的回答中使用了你的例子,因为你说它在你的问题中起作用,并且我假设它的确如此,因为我没有样本数据来重新创建你的问题。 – 2012-02-23 12:39:08

+1

如果你使用公式方法,它的工作原理是尝试绘图(Y/X,data.frame(mymatrix))...不起作用,因为在默认方法中没有“数据”参数!所以我同意数学咖啡第一个例子是无效的,即使有data.frame – dickoa 2012-02-23 12:44:27