簡體   English   中英

R從字符向量到函數公式語句的輸入名稱

[英]R input names from a character vector to a function formula statement

我深知有下文所述的具體問題更好的解決方案(例如, corrcorrHmisc ,為討論在這里 )。 這只是一個我無法弄清楚的更一般R問題的例證:將多個變量名從字符向量傳遞到函數中的公式語句。

假設有一個由數字變量組成的數據集。

vect.a <- rnorm(n = 20, mean = 0, sd = 1)
vect.b <- rnorm(n = 20, mean = 0, sd = 1)
vect.c <- rnorm(n = 20, mean = 0, sd = 1)
vect.d <- rnorm(n = 20, mean = 0, sd = 1)
dataset <- data.frame(vect.a, vect.b, vect.c, vect.d)
names(dataset) <- c("var1", "var2", "var3", "var4")

必須使用函數cor.test ~ VarA + VarB類型的公式語句,對該數據集中的每個可能的變量對執行關聯測試:

for (i in 1:(length(names(dataset))-1)){
    for (j in (i+1):length(names(dataset))) {
        cor.test(~ names(dataset)[i] + names(dataset)[j], data = "dataset")
    }
}

返回錯誤:類型為'character'的'envir'參數無效

我假設一個字符串與該公式語句不兼容,但是哪個類與它兼容? 如果整個方法都不對,請解釋原因並提供或指出替代解決方案。 如果方法是“丑陋”“非R” ,請解釋原因。

您可以通過將as.formula與字符串參數一起使用來獲得該公式。

>> x <- c('x1','x2','x3')
>> f <- as.formula(paste('~ ', x[1], ' + ', x[2]))
>> f
~x1 + x2
>> class(f)
[1] "formula"

這里還有另一個問題,因為dataset是一個名稱,所以data="dataset"應該是data=dataset

> dataset <- data.frame(a=1:5, b=sample(1:5))
> cor.test(~ a + b, data="dataset")
Error in eval(predvars, data, env) : 
  invalid 'envir' argument of type 'character'
> cor.test(~ a + b, data=dataset)

Pearson's product-moment correlation
...

暫無
暫無

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

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