【问题标题】:Plotting Matrix with R like data.frame用 R 绘制矩阵,如 data.frame
【发布时间】:2012-02-23 12:18:07
【问题描述】:

这个问题比类似的here 更高级。预计字符数约为 20。

当我在 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')

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    您可以为此使用 with

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

    希望有帮助

    【讨论】:

    • +1 这行得通,但为什么不是其他方法,仍在思考。将 MVO 添加到试用版中——我应该以不同的方式启动 vars 吗?
    • 同样,公式方法仅在您提供 有效公式 时才有效——您需要将某些内容与其他内容进行对比(注意我给出的示例中的 ~ 符号)。只提供一个值不是一个有效的公式,因为 R 不知道它是 y 还是 x 或者要根据什么来绘制它。
    【解决方案2】:

    这种绘图(在其中键入涉及数据框列的公式)仅适用于数据框。

    如果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))
    

    【讨论】:

    • 啊,它不起作用,因为您提供的示例不起作用(t1 是顶部数据框的示例)。
    • 我已经举了一个例子来展示我的解决方案。你的原因不是因为你作为例子给出的第一行代码('当我绘制像 data.frame 这样的东西时,我这样做')不起作用 - 这不是一个有效的公式。我只在回答中使用了您的示例,因为您说它在您的问题中有效,并且我认为它确实有效,因为我没有示例数据来重现您的问题。
    • 如果您使用公式方法它可以工作,但尝试 plot(Y/X, data.frame(mymatrix))...不起作用,因为默认方法中没有“数据”参数!!!!所以我同意 math.coffee 第一个示例即使使用 data.frame 也无效
    • @hhh - 现在你已经弄清楚了问题所在(你的原始代码是无效的,更不用说与矩阵有任何关系了) - 你打算绘制那些数字 反对,即x值是多少?如果您只想根据1:n(n 是矩阵的行数)绘制它们,那么解决方案是使用@dickoa 的方法——使用with(data.frame(mymatrix),plot(...)) 并省略plot 中的data=... 参数。希望有帮助
    • 正如我所说的……你的公式无效的原因是因为你没有在 反对 任何东西 - 在这种情况下,@dickoa 的答案对你有用。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多