[英]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函數一樣)。 ggplot
和cor.test
什么cor.test
?
您不會像在函數調用中那樣使用字符串來引用變量。 您想傳遞給x
和y
參數數字矢量。 您傳遞了長度為1的字符向量:
> is.numeric("age")
[1] FALSE
> is.character("age")
[1] TRUE
因此,您要求cor.test()
計算字符串"age"
和"friend_count"
之間的相關性。
您還將cor.test()
的formula
方法與default
方法混合在一起。 您提供公式和data
對象, 或者提供參數x
和y
。 您不能混搭。
兩種解決方案是:
with(pdf, cor.test(x = age, y = friend_count))
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.