将“双变量”函数应用于所有数据集变量

时间:2012-03-12 17:58:48

标签: r apply

我想创建一个函数X,它将另一个函数Y应用于多个变量。

功能Y

DplotV <- function (id,x){
    D <- as.data.frame(cbind(id,x))
    x1 <- as.data.frame(D[order(x),])
    dotchart(x1$x,labels=id,pch=16)
}

DplotV(mydata$id,mydata$blood)

这基本上用变量x对id和变量x进行排序,并创建一个dotplot。我还创建了一些代码来命名图表并通过获取x变量名来保存它,我在这里没有包含它。在完整的功能中,我还有其他参数,如颜色等......所以为每个变量编写函数变成了一个重复且冗长的任务。

在处理大数据集时,最好使用相同的id变量绘制多个变量。

有没有办法将上述函数应用于数据集中的每个变量(但始终使用相同的id变量?)

理想情况下,我想要一个函数(例如DplotData)将DplotV应用于数据集中的所有变量(如果可能,除了id var),这样我就可以编写DplotData(mydata$id,mydata)并且函数将循环执行所有数据集变量(在这种情况下为血液和重量)。

2 个答案:

答案 0 :(得分:2)

使用?dotchart中的示例,如果您的数据组织方式与VADeaths类似:

VADeaths
      Rural Male Rural Female Urban Male Urban Female
50-54       11.7          8.7       15.4          8.4
55-59       18.1         11.7       24.3         13.6
60-64       26.9         20.3       37.0         19.3
65-69       41.0         30.9       54.6         35.1
70-74       66.0         54.3       71.1         50.0

其中每列是变量,rownames是ids,然后只需调用dotchart(VADeaths)即可生成分组点图:

enter image description here

或者,您可以使用分面,将数据融合为长格式,然后使用ggplot

require(plyr)
require(ggplot2)
ggplot(melt(VADeaths),aes(y = Var1,x = value)) + 
    facet_wrap(~Var2) + 
    geom_point()

enter image description here

答案 1 :(得分:0)

这篇文章的底部

Pass variable name to plotting function title

在情节图表中积分for循环可以完全满足需要。