首页 > 解决方案 > 如何创建名称在字符向量中指定的新列

问题描述

price <- c(
1.5,
4)

flavor <- c(
"Plain",
"Choc")

df <- data.frame(price,  flavor)
df_s  <- Matrix::sparse.model.matrix(~ . - 1, data = df)
toAdd <- c("flavorStraw", "flavorBlue")

期望的输出:

df_s 带有两个附加列(“flavorStraw”和“flavorBlue”),其值为 . (稀疏矩阵中的空值)

标签: r

解决方案


它只需要赋值为0。单个值可以循环填充行

df[toAdd] <- 0

-输出

df
  price flavor size form
1   1.5  Plain    0    0
2   4.0   Choc    0    0

更新

基于更新即sparseMatrix,一个选项是cbind

df_s <- cbind(df_s, matrix(0, ncol = length(toAdd), 
     nrow = nrow(df_s), dimnames = list(NULL, toAdd)))
df_s
2 x 5 sparse Matrix of class "dgCMatrix"
  price flavorChoc flavorPlain size form
1   1.5          .           1    .    .
2   4.0          1           .    .    .

推荐阅读