修复多重警告"未知列"

ssp*_*c3r 142 r dplyr

对于所有类型的命令(例如,str(x)在包上安装更新),我有一个持久的多重警告"未知列",并且不确定如何调试或修复它.

警告"未知列"显然与我重命名的tbl_df中的变量有关,但警告出现在与tbl_df无关的所有类型的命令中(例如,在包上安装更新,str(x)其中x是只是一个字符向量).

zee*_*hio 46

更新:此问题已在@ kevin-ushey的 RStudio v1.1.103或更高版本的此提交中得到部分修复.它仍然出现(尽管频率较低).

这是RStudio中的诊断工具的问题(该工具显示代码中的警告和可能的错误).

https://support.rstudio.com/hc/en-us/community/posts/115001180488-Diagnostics-and-tibble-warning

作为一种解决方法,您可以在打开的文件的开头添加:

# !diagnostics off
Run Code Online (Sandbox Code Playgroud)

然后保存文件,警告应该停止出现.

您也可以在"首选项/代码/诊断"中禁用诊断.

我相信会出现警告,因为RStudio中的诊断工具会解析源代码以检测错误,当它执行诊断检查时,它会访问您的tibble中未初始化的列,并给出我们看到的警告.警告不会出现,因为您运行不相关的东西,它们在执行RStudio诊断时出现(当文件被保存,然后被修改,当您运行某些东西时......).

  • 好决定.这对我在RStudio 0.99中工作,取消选中工具>全局选项>代码>诊断下的'显示诊断r' (12认同)
  • 带有R 3.4.3的RStudio 1.1.383,问题依然存在. (6认同)
  • 版本1.1.423仍然存在问题.取消选中'show diagnostics'效果很好 (3认同)
  • 仍然存在v1.1.456.叹. (2认同)
  • Sill在Ubuntu的RStudio服务器上存在RStudio v1.1.643和R v3.5.1。 (2认同)
  • 您和您的用户可以选择全局禁用 RStudio 诊断(在 RStudio 设置中)或在每个文件上禁用 RStudio 诊断(使用 `# !diagnostics off` )。这看起来像一条注释,因为对于 R 来说,这是一条注释,并且会被忽略。RStudio 是一个在 R 中开发代码的环境。您为 R 编写指令(代码),而不是为 RStudio 编写。为了向 RStudio 发出指令(做一些不寻常的事情),RStudio 开发人员发现使用“#!”语法很方便,因为 R 会忽略它(对 R 来说它只是一条注释),并且您不太可能向 RStudio 发出随机指令偶然在 R 注释中使用了“#!”。 (2认同)

sab*_*bre 39

我已经遇到了同样的问题,虽然我不知道为什么它发生,我已经能够牵制它发生,从而防止它发生.

问题似乎是在基本R数据帧和tibble数据帧中添加从索引派生的新列.以此示例为例,age向基础R数据框添加新列():

base_df <- data.frame(id = c(1:3), name = c("mary", "jill","steve"))

base_df$age[base_df$name == "mary"] <- 47
Run Code Online (Sandbox Code Playgroud)

这没有返回警告.但是当使用tibble进行同样的操作时,它会发出警告(因此,我认为会导致奇怪的,看似无端的多重警告问题):

library(tibble)

tibble_df <- tibble(id = c(1:3), name = c("mary", "jill","steve"))

tibble_df$age[tibble_df$name == "mary"] <- 47

Warning message:
Unknown column 'age' 
Run Code Online (Sandbox Code Playgroud)

肯定有更好的方法可以避免这种情况,但我发现首先创建一个NAs 矢量可以完成这项工作:

tibble_df$age <- NA

tibble_df$age[tibble_df$name == "mary"] <- 47
Run Code Online (Sandbox Code Playgroud)

  • 我的回答显然不是整个故事:我仍然得到(多个)警告,而且正如其他评论者所暗示的那样,令人沮丧的部分是*明显*任意性.似乎需要`tbl_df`来产生警告,但我不确定它是否足够.也就是说,我认为当`tbl_df'与来自其他tidyverse包的函数(例如,tidyr,dplyr)一起使用时,可能会出现此警告.为这样一套关键的套餐付出的代价很小,但仍然很奇怪/烦人. (13认同)

Var*_*run 16

使用"dplyr"软件包时遇到了这个问题.
对于那些在"dplyr"库中使用"group_by"函数后遇到此问题的人:

我发现取消组合变量可以解决未知列警告问题.有时我不得不多次迭代解组,直到问题得到解决.


小智 6

将类转换data.frame为我解决了这个问题:

library(dplyr)
df <- data.frame(id = c(1,1:3), name = c("mary", "jo", "jill","steve"))
dfTbl <- df %>%
  group_by(id) %>%
  summarize (n = n())
class(dfTbl) # [1] "tbl_df"     "tbl"        "data.frame"
dfTbl = as.data.frame(dfTbl)
class(dfTbl) # [1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

借用@adts的部分脚本

  • 对我不起作用 RStudio 1.1.442 仍然收到`警告消息:未知或未初始化的列:'bad_column'` (2认同)