Почему мои переменные не распознаются в R? - PullRequest
1 голос
/ 24 апреля 2020

Я довольно новичок в 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 ]

2 голосов
/ 24 апреля 2020

Полагаю, вы не вызываете функцию, которая, как вы думаете, будет Попробуйте:

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 голос
/ 24 апреля 2020

Мое первое предположение было то, что что-то случилось при чтении файла из 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

Чтобы преодолеть это проверьте порядок загрузки пакетов или, что еще лучше, используйте синтаксис ::.

0 голосов
/ 24 апреля 2020

у вас наверное attach(the.data.set) тогда rm(list=ls()) или detach(the.data.set) лучше не использовать attach() и использовать $

table(tba_hba$S1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...