簡體   English   中英

R中的整數向量是數字向量嗎?

[英]Are integer vectors numeric vectors in R?

我有一個整數矢量,我希望可以將其視為數字矢量:

> 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什么cor.test

您不會像在函數調用中那樣使用字符串來引用變量。 您想傳遞給xy參數數字矢量。 您傳遞了長度為1的字符向量:

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

因此,您要求cor.test()計算字符串"age""friend_count"之間的相關性。

您還將cor.test()formula方法與default方法混合在一起。 您提供公式和data對象, 或者提供參數xy 您不能混搭。

兩種解決方案是:

  1. with(pdf, cor.test(x = age, y = friend_count))
  2. cor.test( ~ age + friend_count, data = pf)

第一種使用默認方法,但是我們允許自己使用with()直接引用pf的變量。 第二種使用公式方法。

關於標題中的問題; 是的,R中將整數向量視為數字:

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

請在下面的評論中注意@Joshua Ulrich的觀點 如Joshua所示,從技術上講,整數與R中的數字略有不同。 但是,由於R可以根據需要轉換/使用這些內容,因此這種差異在大多數情況下都不必關心用戶。 在某些地方確實很重要,例如.C()調用。

您可以對字符串使用'get'來獲取數據:

age = pf$age
friend_count = pf$friend_count

要么:

attach(pf)

那么以下應該工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM