从R中的tapply输出绘制数据

时间:2013-10-15 11:56:25

标签: r list matrix plot tapply

我是一个真正的初学者,并试图分析一些金属管材料损耗的数据,以供我的硕士论文使用。我想比较不同管道间隔内材料损失的标准偏差。我创建了一些子矩阵并做了tapply来计算标准偏差。

我有以下脚本:

myfunctionSD <- function(mydata) { return(sd(mydata,na.rm=TRUE))}

Alltubes <- tapply(datIn$Material.loss.interval,
                   list(as.factor(datIn$Measurement.location),
                        as.factor(datIn$Tube.number)),
                   myfunctionSD)

其输出是一个表格,其中列标题为Tube.number,行标题为Measurement.location

dput(head(Alltubes))

structure(c(0.871073958553372, NA, 0.697795091282526, NA, 0.838624866472886, 
NA, 0.726992791242471, 0.807567484588899, NA, 0.598675787394729, 
NA, 0.510990323891863, 0.81510216193526, NA, 1.09844645540173, 
NA, 0.839816448199645, NA, 0.63972340253115, NA, 1.11485875917537, 
NA, 0.883318358663128, NA, 0.86706340125676, NA, 1.21565055332783, 
NA, 1.24692213662875, NA, 0.704210691776757, NA, 0.962002980998362, 
NA, 1.00703215272093, NA), .Dim = c(6L, 6L), .Dimnames = list(
    c("1", "10", "11", "12", "13", "14"), c("1", "2", "3", "4", 
    "5", "6")))

为了清楚起见:1,2,3,4,5,6是列的管号和标题,而1,10,11 ......是行的测量位置和标题。 / p>

我想制作不同的数据图,其中一个是: Boxplot在x轴上的管数和y轴的推导标准差的扩散。

我到处搜索并尝试了很多不同的东西,但我无法得到一个图表。

希望有人能帮助我,将不胜感激!

1 个答案:

答案 0 :(得分:0)

您不需要创建特殊功能来执行您想要的操作,您可以将na.rm=TRUE传递给tapply

Alltubes <- tapply(datIn$Material.loss.interval,
                   list(as.factor(datIn$Measurement.location),
                        as.factor(datIn$Tube.number)),
                   sd, na.rm=TRUE)

然后你可以使用:

par(mfrow=c(2,2), mar=c(4,4,1,1), oma=c(1,1,1,1))

boxplot(Alltubes, names=colnames(Alltubes), xlab="Tube numbers",
        ylab="standard deviation")

boxplot(t(Alltubes), names=rownames(Alltubes), 
        xlab="Measurement locations", ylab="standard deviation")

matplot(colnames(Alltubes), t(Alltubes), xlab="Tube numbers", 
        ylab="standard deviation", type="b", lty=1, pch=19)

matplot(rownames(Alltubes), Alltubes, xlab="Measurement locations", 
        ylab="standard deviation", type="b", lty=1, pch=19)

theplot