R中的整数向量是数字向量吗?

时间:2014-09-25 22:49:31

标签: r vector

我有一个整数向量,我希望我可以将其视为数字向量:

> class(pf$age)
[1] "integer"
> is.numeric(pf$age)
[1] TRUE

但是,当我尝试使用它来计算相关性时,我收到一个错误:

> cor.test(x = "age", y = "friend_count", data = pf)
Error in cor.test.default(x = "age", y = "friend_count", data = pf) : 
  'x' must be a numeric vector

我对备用语法的最佳猜测都不是:http://pastie.org/9595290

发生了什么事?

编辑:

以下语法有效:

> x = pf$age
> y = pf$friend_count
> cor.test(x, y, data = pf, method="pearson", alternative="greater")

但是,我不明白为什么我不能在函数中指定x和y(就像使用ggplot之类的其他R函数一样)。 ggplotcor.test之间有什么区别?

2 个答案:

答案 0 :(得分:2)

在函数调用中,不使用类似字符串引用变量。您想要传递给xy参数数字向量。你传递了长度为1的字符向量:

> is.numeric("age")
[1] FALSE
> is.character("age")
[1] TRUE

因此,您要求cor.test()计算字符串"age""friend_count"之间的相关性。

您还将formula cor.test()方法与default方法混为一谈。您提供的公式和data对象可提供参数xy。你不能混合搭配。

两种解决方案是:

  1. with(pdf, cor.test(x = age, y = friend_count))
  2. cor.test( ~ age + friend_count, data = pf)
  3. 第一个使用默认方法,但我们允许自己使用pf直接引用with()中的变量。第二种使用公式方法。

    关于标题中的问题;是的,整数向量在R中被认为是数字:

    > int <- c(1L, 2L)
    > is.integer(int)
    [1] TRUE
    > is.numeric(int)
    [1] TRUE
    

    请注意@Joshua Ulrich在下面评论中的观点。技术上整数与R中的数字略有不同,如约书亚所示。然而,这种差异大多数时候不需要关注用户,因为R可以根据需要转换/使用这些差异。它在某些地方很重要,例如.C()调用。

答案 1 :(得分:0)

你可以使用&#39; get&#39;用字符串来获取数据:

age = pf$age
friend_count = pf$friend_count

或:

attach(pf)

然后应该工作:

cor.test(x = get("age"), y = get("friend_count"))