我有一个像这样的输入文件
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次。
答案 0 :(得分:1)
您可能正在寻找sapply
或apply
你可以用
apply(myDataName, 2, density, kernel="gaussian", bw=15)
如果您的列是factor
而不是numeric
,则需要先进行转换。
答案 1 :(得分:0)
您的data
对象很可能是一个数据框(这是使用read.table
和read.csv
等工具读取数据时的默认设置。
如果要处理每列(为每列创建单独的密度图),则可以使用lapply
函数。
如果你想要一个基于所有数据的单一密度(列没有任何意义),那么你可以使用unlist
函数将它全部转换为一个大向量。更好的方法是使用scan
函数而不是read.table
将数据加载到矢量中以开始并一起跳过数据框。