Как подмножествовать фрейм данных, используя информацию из матрицы?

#r

Вопрос:

Я хотел бы иметь возможность сделать следующее: прочитать матрицу коэффициентов CF и определить, какие переменные имеют ненулевой коэффициент (в данном примере var2 и var4). Затем создайте новый фрейм данных или матрицу, содержащую только эти переменные.

Спасибо!

 # Dataframe
var1 <- c(1, 2, 3)
var2 <- c(1, 0.3, 1.2)
var3 <- c(6, 8, 11)
var4 <- c(0.2, 4, 11)
df <- data.frame(var1, var2, var3, var4)

# Matrix with coefficients for the variables in df
CF <- as.matrix(c(0.0, 0.9, 0.0, -1.2))
rownames(CF) <- c("var1", "var2", "var3", "var4")


# Desired result is dataframe or matrix 
df_var <- data.frame(var2, var4)
 

Ответ №1:

Создайте логический вектор, получите row.names от » CF «и используйте его в качестве имен столбцов в «df»

 df_var <- df[row.names(CF)[CF != 0]]
 

-выход

 df_var
  var2 var4
1  1.0  0.2
2  0.3  4.0
3  1.2 11.0