R尝试从文本文件中的值获取中值时出错

时间:2014-05-11 22:11:09

标签: r

我用python创建了一个简单的文本文件,其中包含0到10之间的100个实数(每行一个值)。

所以我在R上用变量'a'读取并设置它,'read.table()'函数

mean()函数工作正常,但是当使用'a'作为参数时,median()函数返回以下错误(我的R:Base是PT_BR版本,所以我将错误消息翻译成英文。我不知道。不知道它等于原版英文版本)

#Error in median.default(a) : need numeric data

所以我尝试将其转换为数字

as.numeric(a)
#Error: object (a) cannot be coerced to type 'double'

所以我尝试转换为列表并获得中位数

a <- as.list(a)
median(a)
#Error in sort.int(x, na.last = na.last, decreasing = decreasing, ...) : 
#'x' must be atomic

打印清单:

a
$V1
[1] 0.003 0.161 0.227 0.331 0.416 0.441 0.536 0.619 0.730 0.737 0.764 0.799
[13] 0.939 1.009 1.036 1.217 1.321 1.615 1.684 1.878 1.930 1.933 1.949 2.018
[25] 2.053 2.126 2.181 2.464 2.488 2.725 2.838 2.874 2.893 2.954 3.054 3.092
[37] 3.149 3.192 3.216 3.233 3.422 3.424 3.695 3.720 3.743 4.097 4.229 4.229
[49] 4.264 4.317 4.447 4.461 4.529 4.794 4.992 5.121 5.138 5.161 5.241 5.264
[61] 5.286 5.428 5.430 5.430 5.498 5.520 5.706 5.928 5.956 6.074 6.154 6.398
[73] 6.402 6.536 6.549 6.748 6.994 7.196 7.397 7.440 7.840 7.854 7.862 7.913
[85] 7.976 8.002 8.151 8.185 8.237 8.485 8.632 8.688 8.718 9.200 9.372 9.401
[97] 9.487 9.615 9.701 9.702

这是什么$ V1?

我如何获得中位数?

1 个答案:

答案 0 :(得分:1)

您已将数据作为数据框读取:这意味着基本结构是列的列表。尽管此数据框中只有一列,但您需要在应用数值运算(如计算中位数)之前将其提取出来。正如您将在?"[["看到的那样,有多种方法可以为数据框建立索引。

median(a$V1)
median(a[[1]]) 

都拔出了第一列。

median(unlist(a))

删除列表结构。

median(scan("data.txt"))

使用scan()代替,它将结果作为单个向量而不是向量列表(即数据框)读取。