Bạn cũng có thể sử dụng kết hợp các chức năng formula
và paste
.
Dữ liệu thiết lập : Hãy tưởng tượng chúng ta có một data.frame có chứa các biến dự đoán x1
đến x100
và biến phụ thuộc của chúng ta y
, nhưng đó cũng là một biến phiền toái asdfasdf
. Ngoài ra, các biến dự đoán được sắp xếp theo thứ tự sao cho chúng không liền kề nhau trong data.frame.
Data <- data.frame(matrix(rnorm(102 * 200), ncol=102))
names(Data) <- c(paste("x", 1:50, sep=""),
"asdfasdf", "y", paste("x", 51:100, sep=""))
Cũng hãy tưởng tượng rằng bạn có một chuỗi chứa tên của các biến dự đoán. Trong trường hợp này, điều này có thể dễ dàng được tạo bằng cách sử dụng paste
hàm, nhưng trong các tình huống khác, grep
hoặc một số cách tiếp cận khác có thể được sử dụng để có được chuỗi này.
PredictorVariables <- paste("x", 1:100, sep="")
Áp dụng phương pháp : Sau đó chúng ta có thể xây dựng một công thức như sau:
Formula <- formula(paste("y ~ ",
paste(PredictorVariables, collapse=" + ")))
lm(Formula, Data)
- các
collapse
chèn tranh luận +
giữa các biến dự đoán
formula
chuyển đổi chuỗi thành một đối tượng của công thức lớp phù hợp với lm
hàm.
Tổng quát hơn, tôi sử dụng hàm sau khá thường xuyên khi tôi muốn cung cấp một biến dự đoán dưới dạng vectơ của tên biến.
regression <- function(dv, ivs, data) {
# run a linear model with text arguments for dv and ivs
iv_string <- paste(ivs, collapse=" + ")
regression_formula <- as.formula(paste(dv, iv_string, sep=" ~ "))
lm(regression_formula, data)
}
Ví dụ,
regression("y", PredictorVariables, Data)