我在R中遇到这些编程错误 - 尝试应用非功能,添加类"因素"到一个无效的对象

时间:2014-04-09 06:22:04

标签: r csv plot k-means boxplot

我是R编程的新手..我有一个csv文件包含按国家/地区,预期寿命和地区划分的项目。我要做以下事情:

  1. 列出没有。区域和国家绘制条形图
  2. 为每个区域绘制箱线图
  3. 使用k-means算法基于预期寿命的聚类国家
  4. 将具有最小值和最小值的国家/地区命名为最大寿命。
  5. input.csv

    Country,LifeExpectancy,Region
    India,60,Asia
    Srilanka,62,Asia
    Myanmar,61,Asia
    USA,65,America
    Canada,65,America
    UK,68,Europe
    Belgium,67,Europe
    Germany,69,Europe
    Switzerland,70,Europe
    France,68,Europe
    

    我做了什么?

    1

    mydata <- read.table("input.csv", header=TRUE, sep=",")
    barplot(data$ncol(Region))
    

    我收到错误Error in barplot(mydata$ncol(Region)) : attempt to apply non-function

    1. boxplot(LifeExpectancy~Region,mydata=data) ##这是正确的
    2. 3不知道怎么做!

      4. min(mydata$LifeExpectancy);max(mydata$LifeExpectancy) ##这是正确的

1 个答案:

答案 0 :(得分:1)

正如我在评论中指出的那样,这个问题实际上是多个问题,并不反映标题。将来,请尽量保持问题的可管理性和离散性。我不打算在这里回答你的第三点(关于K-means聚类)。搜索SO,我相信你会找到一些相关的问题/答案。

关于您的其他问题,请仔细查看以下内容。如果您不理解特定函数的作用,请参考?function_name(例如?tapply),为了进一步启发,从内到外运行嵌套代码(例如foo(bar(baz(x))),您可以检查baz(x),然后检查bar(baz(x)),最后检查foo(bar(baz(x)))。这是一种简单的方法,可以帮助您处理正在发生的事情,并且在调试产生错误的代码时也很有用

d <- read.csv(text='Country,LifeExpectancy,Region
India,60,Asia
Srilanka,62,Asia
Myanmar,61,Asia
USA,65,America
Canada,65,America
UK,68,Europe
Belgium,67,Europe
Germany,69,Europe
Switzerland,70,Europe
France,68,Europe', header=TRUE)

barplot(with(d, tapply(Country, Region, length)), cex.names=0.8, 
        ylab='No. of countries', xlab='Region', las=1)

barplot

boxplot(LifeExpectancy ~ Region, data=d, las=1, 
        xlab='Region', ylab='Life expectancy')

enter image description here

d$Country[which.min(d$LifeExpectancy)]

# [1] India
# Levels: Belgium Canada France Germany India Myanmar Srilanka Switzerland UK USA

d$Country[which.max(d$LifeExpectancy)]

# [1] Switzerland
# Levels: Belgium Canada France Germany India Myanmar Srilanka Switzerland UK USA