r中一次多个列的密度

时间:2013-02-21 17:09:47

标签: r

我有一个像这样的输入文件

V1 V2 V3 V4.............V60 
11 22 33 44.............89 
21 98 22 33.............09 
33 44 55 78.............20

上述文件有超过3000行,每行有60列。

当我在r提示符下尝试使用density(data, kernel="gaussian", bw=15)时,会产生错误

Error in density.default(data) : argument 'x' must be numeric

但是,当我尝试density(data$V1, kernel="gaussian", bw=15)时,它运行正常。

我想知道是否有一个命令来计算整个文件的密度,而不是每个列都进行60次。

2 个答案:

答案 0 :(得分:1)

您可能正在寻找sapplyapply 你可以用

 apply(myDataName,  2,  density, kernel="gaussian", bw=15)

如果您的列是factor而不是numeric,则需要先进行转换。

答案 1 :(得分:0)

您的data对象很可能是一个数据框(这是使用read.tableread.csv等工具读取数据时的默认设置。

如果要处理每列(为每列创建单独的密度图),则可以使用lapply函数。

如果你想要一个基于所有数据的单一密度(列没有任何意义),那么你可以使用unlist函数将它全部转换为一个大向量。更好的方法是使用scan函数而不是read.table将数据加载到矢量中以开始并一起跳过数据框。