我对所有类型的命令(例如,str(x)在软件包上安装更新)持续存在多个“未知列”警告,并且不确定如何调试此或修复它。修复多个警告“未知的列”
警告“未知列”显然与我重命名的tbl_df中的变量有关,但警告出现在与tbl_df看似无关的所有命令中(例如,在包上安装更新,str(x )其中x仅仅是一个字符向量)。
我对所有类型的命令(例如,str(x)在软件包上安装更新)持续存在多个“未知列”警告,并且不确定如何调试此或修复它。修复多个警告“未知的列”
警告“未知列”显然与我重命名的tbl_df中的变量有关,但警告出现在与tbl_df看似无关的所有命令中(例如,在包上安装更新,str(x )其中x仅仅是一个字符向量)。
我已经遇到了同样的问题,虽然我不知道为什么它发生,我已经能够牵制当它发生,从而防止它发生。
该问题似乎是在基础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
我的回答显然不是整个故事:我仍然得到(多个)警告,而正如其他评论者所暗示的那样,令人沮丧的部分是它。 'tbl_df'似乎是产生警告所必需的,但我不确定这是否足够。也就是说,我认为当'tbl_df'与其他tidyverse软件包(例如tidyr,dplyr)的函数结合使用时,可能会出现此警告。为这样一个关键套餐套餐支付小笔费用,但却令人感到奇怪/烦人。 – sabre
我就遇到了这个问题,也只是通过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
我在使用“dplyr”包时遇到了这个问题。
对于在“dplyr”库中使用“group_by”函数后面临此问题的人:
我发现取消组合变量解决了未知列警告问题。有时候我不得不迭代数次解组,直到问题解决。
更新:我相信这已被固定在此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诊断时出现(当文件被保存,然后被修改,当您运行某些内容时...)。
比方说,我想选择以下列(S)
best.columns = 'id'
对于我下面给了警告:
df%>% select_(one_of(best.columns))
虽然这和预期一样,虽然,据我知道dplyr
,这应该是相同的。
df%>% select_(.dots = best.columns)
类转换成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
仍然存在问题,它就像一个魅力。我想知道是否有任何缺点将其转换为数据帧,然后将其转换回tibble。它只是它失去的警告吗? – p130ter
我意识到这个问题是模糊的,但如此看来问题借来的部分脚本。我甚至可以输入废话(例如,错字)并收到警告。我猜它在IDE环境本身是持久的,不知何故? – ssp3nc3r
你可以发布确切的命令和你得到的输出吗? – konvas
您是否已开始进行清洁会议,问题仍然存在?是什么让它开始发生? – aosmith