【问题标题】:Check column names in R and create a dummy column检查 R 中的列名并创建一个虚拟列
【发布时间】:2022-08-12 17:55:15
【问题描述】:

我编写了一个函数来检查数据框中是否存在列。如果没有列,则创建一个虚拟列

add_Column <- function(df, col_name){
  if(\"col_name\" %in% colnames(df)) {
    NULL
  } else{
    df$col_name <- \"\"
  }
}

所以当我在下面检查时,

add_Column(iris, \"new\")

预期产出

head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species  new
1          5.1         3.5          1.4         0.2  setosa  
2          4.9         3.0          1.4         0.2  setosa  
3          4.7         3.2          1.3         0.2  setosa  
4          4.6         3.1          1.5         0.2  setosa  
5          5.0         3.6          1.4         0.2  setosa  
6          5.4         3.9          1.7         0.4  setosa
  • 最后,您需要在函数中返回 df 。
  • 假设您的问题是“为什么我的代码不起作用?”,请不要在您的 if 语句中将 col_name 放在引号中并返回修改后的 df。
  • 我尝试了这两个建议。不工作
  • 同样在你的 else 语句中使用df[col_name]=\"\"

标签: r


【解决方案1】:

首先,添加return 并使用[] 分配“新”列名称,如下所示:

add_Column <- function(df, col_name){
  if("col_name" %in% colnames(df)) {
    NULL
  } else{
    df[col_name] <- ""
  }
  return(df)
}

add_Column(head(iris), "new")
#>   Sepal.Length Sepal.Width Petal.Length Petal.Width Species new
#> 1          5.1         3.5          1.4         0.2  setosa    
#> 2          4.9         3.0          1.4         0.2  setosa    
#> 3          4.7         3.2          1.3         0.2  setosa    
#> 4          4.6         3.1          1.5         0.2  setosa    
#> 5          5.0         3.6          1.4         0.2  setosa    
#> 6          5.4         3.9          1.7         0.4  setosa

reprex package (v2.0.1) 于 2022 年 8 月 12 日创建

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2015-10-22
    相关资源
    最近更新 更多