为什么我的变量在R中无法识别?

时间:2020-04-24 16:37:54

标签: r

我是R语言的初学者。我编写了一个运行良好的脚本。但是,从昨天开始,它不再识别我的变量了。我可以查看数据集,但无法执行任何分析。

tba_hba <- read_excel(k.file)
tba_hba

   AMT   E0    M     `X-Kto`    S1    S2    S3    S4 
   <chr> <chr> <chr> <chr>   <dbl> <dbl> <dbl> <dbl> 
 1 TBA   D0    T248~ X1.2.1~     1     2     1     0 
 2 TBA   D0    T248~ X1.2.1~     1     2     1     0 
 3 TBA   D0    T248~ X0.3.1~     0     3     1     0 
 4 TBA   D0    T248~ X0.3.1~     0     3     1     0 
 5 TBA   D0    T248~ X0.3.1~     0     3     1     0 
 6 TBA   D0    T248~ X0.3.1~     0     3     1     0 
 7 TBA   D0    T248~ X0.3.1~     0     3     1     0 
 8 TBA   D0    T248~ X0.3.1~     0     3     1     0 

count(tba_hba, S1)

Error in count(tba_hba, S1) : object 'S1' not found

我可以看到变量S1,但是无法对其进行计数。

使用read.xlsx时出现相同的错误。

有什么想法为什么从昨天开始就发生这种情况而没有更改我的数据?

编辑:这是我的数据:

structure(list(AMT = c("TBA", "TBA", "TBA", "TBA", "TBA", "TBA", 
"TBA", "TBA", "TBA", "TBA", "TBA", "TBA", "TBA", "TBA", "TBA"
), E0 = c("D0", "D0", "D0", "D0", "D0", "D0", "D0", "D0", "D0", 
"D0", "D0", "D0", "D0", "D0", "D0"), M = c("T248A15", "T248A15", 
"T248A15", "T248A15", "T248A15", "T248A15", "T248A15", "T248A15", 
"T248A15", "T248A15", "T248A15", "T248A15", "T248A15", "T248A15", 
"T248A15"), S1 = c(1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 
0), S2 = c(2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, 3), S3 = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), S4 = c(0, 0, 0, 0, 
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0), Projekt = c("Y02.9.8.1", "Y02.9.8.1", 
"Y34.6.1.2", "Y01.6.1.1", "Y01.6.1.1", "Y05.6.1.1", "Y04.6.1.1", 
"Y04.6.1.1", "Y05.6.1.1", "Y21.9.8.1", "Y23.9.8.1", "Y05.6.1.1", 
"Y03.6.1.1", "Y03.6.1.1", "Y05.6.1.1")), row.names = c(NA, -15L
), class = c("tbl_df", "tbl", "data.frame"))

3 个答案:

答案 0 :(得分:2)

我强烈猜测您不会调用您认为会的函数。试试:

dplyr::count(df, S1)
# # A tibble: 2 x 2
#       S1     n
#    <dbl> <int>
# 1     0    11
# 2     1     4


# The error message if a S_xy is not in the data:
dplyr::count(df, S_xy)
# Error: Column `S_xy` is unknown

答案 1 :(得分:1)

我的第一个猜测是从Excel读取文件时发生了某些情况。如果您按照问题中的说明读取了数据,那么它应该可以工作:

library("dplyr")
library("readr")
x <- (
  "AMT   E0    M     `X-Kto`    S1    S2    S3    S4
TBA   D0    T248~ X1.2.1~     1     2     1     0
TBA   D0    T248~ X1.2.1~     1     2     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0
TBA   D0    T248~ X0.3.1~     0     3     1     0")

tba_hba <- read_delim(x, delim=" ", trim_ws = TRUE)
count(tba_hba, S1)

选项trim_ws在这里对于列名很重要,但是在read_excel中,此参数默认为TRUE

然后@mnist提出了建议,即使用了另一个功能。将plyr与 d plyr混淆确实是一个合理的解释。

比较以下内容:

plyr::count(tba_hba, S1)
Error in count(tba_hba, S1) : object 'S1' not found

和:

dplyr::count(tba_hba, S1)

# A tibble: 2 x 2
     S1     n
  <dbl> <int>
1     0     6
2     1     2

要解决此问题,请检查软件包的加载顺序,或者更好的是使用::语法。

答案 2 :(得分:0)

您最好先attach(the.data.set),然后再rm(list=ls())detach(the.data.set),而不要使用attach()并使用$

table(tba_hba$S1)
相关问题