2016-08-19 73 views
82

我对所有类型的命令(例如,str(x)在软件包上安装更新)持续存在多个“未知列”警告,并且不确定如何调试此或修复它。修复多个警告“未知的列”

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

+6

我意识到这个问题是模糊的,但如此看来问题借来的部分脚本。我甚至可以输入废话(例如,错字)并收到警告。我猜它在IDE环境本身是持久的,不知何故? – ssp3nc3r

+0

你可以发布确切的命令和你得到的输出吗? – konvas

+0

您是否已开始进行清洁会议,问题仍然存在?是什么让它开始发生? – aosmith

回答

25

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

该问题似乎是在基础R数据框中与在粗糙数据框中添加来自索引的新列。就拿这个例子中,在其中添加新列(age)为基础R数据帧:

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

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

,没有返回警告作品。但是,当同样是用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' 

有避免这一点肯定更好的方法,但我已经发现,首先创建的NA个向量做这项工作:

tibble_df$age <- NA 

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

我的回答显然不是整个故事:我仍然得到(多个)警告,而正如其他评论者所暗示的那样,令人沮丧的部分是它。 'tbl_df'似乎是产生警告所必需的,但我不确定这是否足够。也就是说,我认为当'tbl_df'与其他tidyverse软件包(例如tidyr,dplyr)的函数结合使用时,可能会出现此警告。为这样一个关键套餐套餐支付小笔费用,但却令人感到奇怪/烦人。 – sabre

0

我就遇到了这个问题,也只是通过tibble使用dyplyr块中创建。这里是对军刀代码的轻微修改,以显示我是如何来到相同的错误。

library(dplyr) 

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

t <- df %>% 
    group_by(id) %>% 
    summarize (n = n()) 

t 
str(t) 


t$newvar[t$id==1] <- 0 
11

我在使用“dplyr”包时遇到了这个问题。
对于在“dplyr”库中使用“group_by”函数后面临此问题的人:

我发现取消组合变量解决了未知列警告问题。有时候我不得不迭代数次解组,直到问题解决。

22

更新:我相信这已被固定在此commit RStudio v1.1.103或更高版本@kevin-ushey。所以在下一个RStudio发行版中,这个问题不再是一个问题。

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

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

正如你可以在打开的文件(S)的开头添加一个解决办法:

# !diagnostics off 

然后保存文件和警告应该停止出现。

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

我相信会出现这些警告,因为RStudio中的诊断工具会分析源代码来检测错误,并且当它执行诊断检查时,它会访问未经初始化的Tibble中的列,并给出我们看到的警告。警告不会出现,因为您运行的是不相关的事情,它们在执行RStudio诊断时出现(当文件被保存,然后被修改,当您运行某些内容时...)。

+5

好的电话。这在RStudio 0.99中为我工作,在工具>全局选项>代码>诊断中取消选中'show diagnostics for r' –

+1

取消选中“show diagnostics for R”也适用于RStudio v.1.0.xxx。在1.1发布后我会尝试重新启用它并升级。 – Magnus

+1

FWIW我仍然得到错误(RStudio v 1.1.x),但是建议的解决方案在此处运行 – Phil

0

比方说,我想选择以下列(S)

best.columns = 'id' 

对于我下面给了警告:

df%>% select_(one_of(best.columns)) 

虽然这和预期一样,虽然,据我知道dplyr,这应该是相同的。

df%>% select_(.dots = best.columns) 
2

类转换成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" 

从@adts

+0

仍然存在问题,它就像一个魅力。我想知道是否有任何缺点将其转换为数据帧,然后将其转换回tibble。它只是它失去的警告吗? – p130ter

相关问题