Ошибка попытка использовать имя переменной нулевой длины

I’ve posted an issue on dplyr github page. I can reproduce the results using the code below. It has to do with whether the csv contains a column of rownames without a header. read_csv and read.csv handle this differently, thus producing differing results with filter.

First the case when it works

write_csv to read_csv or read.csv; both work fine with filter

library(readr)
library(dplyr)

mtcars %>% write_csv("~/Desktop/test.csv")
test_r <-  read_csv("~/Desktop/test.csv") %>% filter(hp>100)
test.r <-  read.csv("~/Desktop/test.csv") %>% filter(hp>100)

Now for when it fails

When csv is generated through a process like write.csv, unless the person changes the default of row.names to FALSE, it introduces a column of rownames w/o a header. When reading the data back in, read_csv does not fill in the header where the rownames are, but read.csv imputes an X. Thus, when filter works on read.csv imports, it has all headers with filled cells, but filter after read_csv has an empty header cell at least where rownames are.

The following code should error after test1_r %>% filter(hp>100) with the following error

Error in filter_impl(.data, dots) : 
  attempt to use zero-length variable name

Again, the big difference is how write.csv produces the csv.

mtcars %>% write.csv("~/Desktop/test1.csv")


test1_r <- read_csv("~/Desktop/test1.csv")
test1_r %>% str() 
#should fail here
test1_r %>% filter(hp>100)


test1.r <- read.csv("~/Desktop/test1.csv")
test1.r %>% str() 
test1.r %>% filter(hp>100)

To solve the problem, you can use read.csv as mentioned above by @hackR. Or you can subset out the first column when you know the csv behaves like this:

test1_r <- read_csv("~/Desktop/test1.csv")[-1]

Or, if you are in control of the csv-creation step, you can add the option row.names=FALSE to write.csv

mtcars %>% write.csv("~/Desktop/test2.csv", row.names = FALSE)
test2.r <- read_csv("~/Desktop/test2.csv")
test2.r %>% str() 
test2.r%>% filter(hp>100)

or use write_csv as shown above.

Когда я генерирую новый файл rmarkdown (или открываю существующие rmarkdown-файлы) и пытаюсь запустить блок rmarkdown, я получаю эту ошибку: «Ошибка: попытка использовать имя переменной нулевой длины». У меня Win10 и вчера я сделал новую установку R и Rstudio. Что я пропустил? Откуда эта ошибка?

```{r cars}
summary(cars)
```

« `{r cars} Ошибка: попытка использовать имя переменной нулевой длины

enter image description here

4 ответа

Лучший ответ

Помещение этого в качестве ответа для наглядности: это происходит, если вы пытаетесь запустить, выбрав все в Rmd и нажав ввод, как если бы вы работали с обычным R-скриптом. RStudio пытается запустить все это как код R, включая части уценки, что приводит к ошибкам, которые вы видели.

Вы можете избежать этого, запустив отдельный чанк, нажав зеленую кнопку воспроизведения или выбрав один из параметров запуска в раскрывающемся списке в верхней части редактора Rmd.


29

Donovan192
14 Фев 2018 в 20:09

Проблема может быть связана с тем, что объект был изменен в глобальной среде на более раннем сеансе, и этот сеанс был сохранен в глобальной среде. Лучше не сохранять что-либо в глобальной среде при завершении сеанса Rstudio (или консоли R). Один из вариантов — снова вызвать data(cars), чтобы мы получили исходный набор данных.

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-вывод введите описание изображения здесь

Один из способов избежать подобных сюрпризов — использовать опцию «Не сохранять» при выходе из сеанса.

enter image description here


5

akrun
12 Сен 2017 в 08:33

У меня был следующий код в моей R Studio, чтобы подавить некоторые предупреждения. Я хотел скрыть все возможные выходные данные, но все же оценить код, например скрыть вывод текста (results = ‘hide’), скрыть предупреждения, скрыть сообщения.

```{r message=FALSE, warning=FALSE, results='hide'}

Когда я избавился от этих строк, я перестал также получать ошибку.

Надеюсь, это поможет.

Я все еще получаю ту же ошибку, не могли бы вы помочь? Я пытаюсь скопировать код для Ирана из https://github.com/ timchurches / блог / BLOB / Master / _posts / 2020-02-18 — анализирующей — covid — 19-2019 — ncov — вспышка -данные — с — т — часть -1 / анализирующая — covid — 19-2019 — ncov — outbreak- данная с -р — частичная 1.Rmd.


0

newb2019
11 Май 2020 в 17:07

Для меня проблема заключалась в том, что у меня отсутствовал обратный удар в закрывающем блоке кода. Другими словами, это выглядело следующим образом (обратите внимание, что есть только два обратных кавычка, а не три, как должно быть).

```{r}
# do some stuff
``

Таким образом, эти две метки были обработаны как часть блока кода, который является допустимым кодом для предоставления имени переменной, например, например.

`+`

Но поскольку между обратными галочками не было указано имя переменной, я получал ошибку «попытка использовать имя переменной нулевой длины».


0

dpritch
18 Май 2020 в 16:10

When i generate a new rmarkdown file (or open existing rmarkdown-files) and try to run a rmarkdown chunk, i get this error: «Error: attempt to use zero-length variable name».
I have Win10 and did a fresh install of R and Rstudio yesterday. What did i miss? Where does this error come from?

```{r cars}
summary(cars)
```

«`{r cars}
Error: attempt to use zero-length variable name

enter image description here

asked Sep 12, 2017 at 8:20

SEMson's user avatar

4

Putting this as an answer for visibility: this happens if you try to run by selecting all in the Rmd and pressing enter like you would with a normal R script. RStudio tries to run this all as R code, including the markdown parts, leading to the errors you saw.

You can avoid this by running an individual chunk by clicking the green play button or by selecting one of the run options in the dropdown at the top of the Rmd editor.

answered Feb 14, 2018 at 20:09

Donovan192's user avatar

Donovan192Donovan192

6381 gold badge8 silver badges13 bronze badges

1

For me the issue was that I had a missing backtick in the closing code block. In other words, it looked like the following (note that there are only two closing backticks, not three as there should be).

```{r}
# do some stuff
``

So the two backticks were being processed as part of the code block, which is legal code for supplying a variable name such as e.g.

`+`

But since no variable name was provided between the backticks, I was getting the «attempt to use zero-length variable name» error.

answered May 18, 2020 at 16:10

dpritch's user avatar

dpritchdpritch

1,07913 silver badges14 bronze badges

1

The problem could be due to the object being changed in the global environment in an earlier session and that session got saved in the global ennvironment. It is better to not save anything in the global environment, while ending the Rstudio session (or R console). One option would be to call the data(cars) again so that we get the original dataset

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-output
enter image description here

One option to avoid these kind of surprises is to use the «Don’t save» option while quitting the session

enter image description here

answered Sep 12, 2017 at 8:33

akrun's user avatar

akrunakrun

849k37 gold badges511 silver badges631 bronze badges

2

check the header’s.. very top of the script / page..

--- 
title: "R Notebook" -->
author: "your_name_here" -->
date: "28/05/2022" -->
output: html_document --> 'notebook' returns 'zero-length' error..
---

from above, change…

output: html_notebook

…to…

output: html_document

answered Jun 2, 2022 at 3:17

rdfleay's user avatar

0

I got the same message, my error was to have four backtick in one of the block codes

answered Jan 7, 2022 at 18:39

Carlos Parra's user avatar

I had the same error. The problem was that comments within the code chunk had missing ‘#´s. The particular code chunk partially executed, showing the results and a syntax warning (but the markdown did not knit) What happened what that I used the keyboard short cut of ‘CTRL+AlT+I» to insert a code chunk and it ‘swallowed’ the comments. A sneaky error to be sure.

answered Jun 30, 2022 at 11:48

João Bragança's user avatar

In my case this issue was caused by copying the sequence «»’ {r}» into the R studio document. After manually re-entering this phrase, everything worked fine and I successfully generated a markdown file.

answered Mar 30, 2022 at 12:30

Marius's user avatar

This approach involves selecting (highlighting) the R code only (summary(pressure)), not any of the backticks/fences from the code chunk. (If you see Error: attempt to use zero-length variable name it is because you have accidentally highlighted the backticks along with the R code……..source: https://rstudio-conf-2020.github.io/r-for-excel/rstudio.html

answered Oct 15, 2020 at 2:51

Dr.Sundeep Deulkar's user avatar

When i generate a new rmarkdown file (or open existing rmarkdown-files) and try to run a rmarkdown chunk, i get this error: «Error: attempt to use zero-length variable name».
I have Win10 and did a fresh install of R and Rstudio yesterday. What did i miss? Where does this error come from?

```{r cars}
summary(cars)
```

«`{r cars}
Error: attempt to use zero-length variable name

enter image description here

asked Sep 12, 2017 at 8:20

SEMson's user avatar

4

Putting this as an answer for visibility: this happens if you try to run by selecting all in the Rmd and pressing enter like you would with a normal R script. RStudio tries to run this all as R code, including the markdown parts, leading to the errors you saw.

You can avoid this by running an individual chunk by clicking the green play button or by selecting one of the run options in the dropdown at the top of the Rmd editor.

answered Feb 14, 2018 at 20:09

Donovan192's user avatar

Donovan192Donovan192

6381 gold badge8 silver badges13 bronze badges

1

For me the issue was that I had a missing backtick in the closing code block. In other words, it looked like the following (note that there are only two closing backticks, not three as there should be).

```{r}
# do some stuff
``

So the two backticks were being processed as part of the code block, which is legal code for supplying a variable name such as e.g.

`+`

But since no variable name was provided between the backticks, I was getting the «attempt to use zero-length variable name» error.

answered May 18, 2020 at 16:10

dpritch's user avatar

dpritchdpritch

1,07913 silver badges14 bronze badges

1

The problem could be due to the object being changed in the global environment in an earlier session and that session got saved in the global ennvironment. It is better to not save anything in the global environment, while ending the Rstudio session (or R console). One option would be to call the data(cars) again so that we get the original dataset

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-output
enter image description here

One option to avoid these kind of surprises is to use the «Don’t save» option while quitting the session

enter image description here

answered Sep 12, 2017 at 8:33

akrun's user avatar

akrunakrun

849k37 gold badges511 silver badges631 bronze badges

2

check the header’s.. very top of the script / page..

--- 
title: "R Notebook" -->
author: "your_name_here" -->
date: "28/05/2022" -->
output: html_document --> 'notebook' returns 'zero-length' error..
---

from above, change…

output: html_notebook

…to…

output: html_document

answered Jun 2, 2022 at 3:17

rdfleay's user avatar

0

I got the same message, my error was to have four backtick in one of the block codes

answered Jan 7, 2022 at 18:39

Carlos Parra's user avatar

I had the same error. The problem was that comments within the code chunk had missing ‘#´s. The particular code chunk partially executed, showing the results and a syntax warning (but the markdown did not knit) What happened what that I used the keyboard short cut of ‘CTRL+AlT+I» to insert a code chunk and it ‘swallowed’ the comments. A sneaky error to be sure.

answered Jun 30, 2022 at 11:48

João Bragança's user avatar

In my case this issue was caused by copying the sequence «»’ {r}» into the R studio document. After manually re-entering this phrase, everything worked fine and I successfully generated a markdown file.

answered Mar 30, 2022 at 12:30

Marius's user avatar

This approach involves selecting (highlighting) the R code only (summary(pressure)), not any of the backticks/fences from the code chunk. (If you see Error: attempt to use zero-length variable name it is because you have accidentally highlighted the backticks along with the R code……..source: https://rstudio-conf-2020.github.io/r-for-excel/rstudio.html

answered Oct 15, 2020 at 2:51

Dr.Sundeep Deulkar's user avatar

Когда я генерирую новый файл rmarkdown (или открываю существующие rmarkdown-файлы) и пытаюсь запустить блок rmarkdown, я получаю эту ошибку: «Ошибка: попытка использовать имя переменной нулевой длины». У меня Win10 и вчера я сделал новую установку R и Rstudio. Что я пропустил? Откуда эта ошибка?

```{r cars}
summary(cars)
```

« `{r cars} Ошибка: попытка использовать имя переменной нулевой длины

enter image description here

4 ответа

Лучший ответ

Помещение этого в качестве ответа для наглядности: это происходит, если вы пытаетесь запустить, выбрав все в Rmd и нажав ввод, как если бы вы работали с обычным R-скриптом. RStudio пытается запустить все это как код R, включая части уценки, что приводит к ошибкам, которые вы видели.

Вы можете избежать этого, запустив отдельный чанк, нажав зеленую кнопку воспроизведения или выбрав один из параметров запуска в раскрывающемся списке в верхней части редактора Rmd.


29

Donovan192
14 Фев 2018 в 20:09

Проблема может быть связана с тем, что объект был изменен в глобальной среде на более раннем сеансе, и этот сеанс был сохранен в глобальной среде. Лучше не сохранять что-либо в глобальной среде при завершении сеанса Rstudio (или консоли R). Один из вариантов — снова вызвать data(cars), чтобы мы получили исходный набор данных.

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-вывод введите описание изображения здесь

Один из способов избежать подобных сюрпризов — использовать опцию «Не сохранять» при выходе из сеанса.

enter image description here


5

akrun
12 Сен 2017 в 08:33

У меня был следующий код в моей R Studio, чтобы подавить некоторые предупреждения. Я хотел скрыть все возможные выходные данные, но все же оценить код, например скрыть вывод текста (results = ‘hide’), скрыть предупреждения, скрыть сообщения.

```{r message=FALSE, warning=FALSE, results='hide'}

Когда я избавился от этих строк, я перестал также получать ошибку.

Надеюсь, это поможет.

Я все еще получаю ту же ошибку, не могли бы вы помочь? Я пытаюсь скопировать код для Ирана из https://github.com/ timchurches / блог / BLOB / Master / _posts / 2020-02-18 — анализирующей — covid — 19-2019 — ncov — вспышка -данные — с — т — часть -1 / анализирующая — covid — 19-2019 — ncov — outbreak- данная с -р — частичная 1.Rmd.


0

newb2019
11 Май 2020 в 17:07

Для меня проблема заключалась в том, что у меня отсутствовал обратный удар в закрывающем блоке кода. Другими словами, это выглядело следующим образом (обратите внимание, что есть только два обратных кавычка, а не три, как должно быть).

```{r}
# do some stuff
``

Таким образом, эти две метки были обработаны как часть блока кода, который является допустимым кодом для предоставления имени переменной, например, например.

`+`

Но поскольку между обратными галочками не было указано имя переменной, я получал ошибку «попытка использовать имя переменной нулевой длины».


0

dpritch
18 Май 2020 в 16:10

Не открывая никаких файлов, я получаю следующую ошибку при открытии Rstudio:

«Ошибка: попытка использовать имя переменной нулевой длины»

Все мои команды игнорируются (т.е. ничего не происходит, никаких предупреждений и R перестает реагировать на все, что я делаю), и я пробовал параметры rm и gc, которые недоступны, а также обновился до последней версии Rstudio и R, но я все еще получаю эту ошибку.

Я использую Windows 7 (64 бит).

  • Какая ОС? Какие версии R и RStudio (поясните)? Вы настроили файл для автоматического запуска кода при запуске? Как именно игнорируются команды? Вы видите подсказку на консоли?

Я опубликовал проблему на странице dplyr github. Я могу воспроизвести результаты, используя приведенный ниже код. Это связано с тем, содержит ли csv столбец с именами без заголовка. и обрабатывают это по-разному, что дает разные результаты для .

Первый случай, когда он работает

От до или ; оба работают нормально с


Теперь, когда это не удается

Когда csv создается с помощью процесса, подобного , если пользователь не изменяет значение по умолчанию на , он вводит столбец с именами строк без заголовка.При обратном чтении данных не заполняет заголовок, где находятся имена строк, но вменяет X. Таким образом, когда работает с импортом , он имеет все заголовки с заполненными ячейками, но после имеет пустой заголовок по крайней мере, там, где есть имена.

Следующий код должен появиться после со следующей ошибкой


Опять же, большая разница в том, как write.csv создает csv.


Чтобы решить эту проблему, вы можете использовать , как упоминалось выше @hackR. Или вы можете выделить первый столбец, если знаете, что csv ведет себя следующим образом:


Или, если вы контролируете шаг создания csv, вы можете добавить параметр в


или используйте , как показано выше.

  • @skeletonnoire, это решило вашу проблему?
  • Это также может произойти, если в вашем .csv есть столбец без заголовка.
  • @data_steve Спасибо, read_csv у меня работает, так как изначально я использую read.csv для чтения моего файла, что тоже вызывает эту ошибку.

У меня было такое же сообщение об ошибке, и оно было связано с read_csv () из пакета readr Хэдли. Если бы я сделал это:


затем я получил сообщение об ошибке «Ошибка в filter_impl (.data, точки): попытаться использовать имя переменной нулевой длины». Но если бы я использовал аналогичную базовую функцию read.csv (), то она работала нормально.


Я думаю, это может быть ошибка в read_csv (), или, возможно, я неправильно использую read_csv ().


В вашем конкретном случае, возможно, что-то работает автоматически, когда вы загружаете RStudio.

  • 2 У меня такая же проблема, и замена на read.csv решила ее.
  • У меня точно такая же проблема

В качестве ответа для наглядности: это произойдет, если вы попытаетесь запустить, выбрав все в Rmd и нажав клавишу ВВОД, как в обычном сценарии R. RStudio пытается запустить все это как код R, включая части уценки, что приводит к обнаруженным вами ошибкам.

Вы можете избежать этого, запустив отдельный блок, нажав зеленую кнопку воспроизведения или выбрав один из параметров запуска в раскрывающемся списке в верхней части редактора Rmd.

I’ve posted an issue on dplyr github page. I can reproduce the results using the code below. It has to do with whether the csv contains a column of rownames without a header. read_csv and read.csv handle this differently, thus producing differing results with filter.

First the case when it works

write_csv to read_csv or read.csv; both work fine with filter

library(readr)
library(dplyr)

mtcars %>% write_csv("~/Desktop/test.csv")
test_r <-  read_csv("~/Desktop/test.csv") %>% filter(hp>100)
test.r <-  read.csv("~/Desktop/test.csv") %>% filter(hp>100)

Now for when it fails

When csv is generated through a process like write.csv, unless the person changes the default of row.names to FALSE, it introduces a column of rownames w/o a header. When reading the data back in, read_csv does not fill in the header where the rownames are, but read.csv imputes an X. Thus, when filter works on read.csv imports, it has all headers with filled cells, but filter after read_csv has an empty header cell at least where rownames are.

The following code should error after test1_r %>% filter(hp>100) with the following error

Error in filter_impl(.data, dots) : 
  attempt to use zero-length variable name

Again, the big difference is how write.csv produces the csv.

mtcars %>% write.csv("~/Desktop/test1.csv")


test1_r <- read_csv("~/Desktop/test1.csv")
test1_r %>% str() 
#should fail here
test1_r %>% filter(hp>100)


test1.r <- read.csv("~/Desktop/test1.csv")
test1.r %>% str() 
test1.r %>% filter(hp>100)

To solve the problem, you can use read.csv as mentioned above by @hackR. Or you can subset out the first column when you know the csv behaves like this:

test1_r <- read_csv("~/Desktop/test1.csv")[-1]

Or, if you are in control of the csv-creation step, you can add the option row.names=FALSE to write.csv

mtcars %>% write.csv("~/Desktop/test2.csv", row.names = FALSE)
test2.r <- read_csv("~/Desktop/test2.csv")
test2.r %>% str() 
test2.r%>% filter(hp>100)

or use write_csv as shown above.

I’ve posted an issue on dplyr github page. I can reproduce the results using the code below. It has to do with whether the csv contains a column of rownames without a header. read_csv and read.csv handle this differently, thus producing differing results with filter.

First the case when it works

write_csv to read_csv or read.csv; both work fine with filter

library(readr)
library(dplyr)

mtcars %>% write_csv("~/Desktop/test.csv")
test_r <-  read_csv("~/Desktop/test.csv") %>% filter(hp>100)
test.r <-  read.csv("~/Desktop/test.csv") %>% filter(hp>100)

Now for when it fails

When csv is generated through a process like write.csv, unless the person changes the default of row.names to FALSE, it introduces a column of rownames w/o a header. When reading the data back in, read_csv does not fill in the header where the rownames are, but read.csv imputes an X. Thus, when filter works on read.csv imports, it has all headers with filled cells, but filter after read_csv has an empty header cell at least where rownames are.

The following code should error after test1_r %>% filter(hp>100) with the following error

Error in filter_impl(.data, dots) : 
  attempt to use zero-length variable name

Again, the big difference is how write.csv produces the csv.

mtcars %>% write.csv("~/Desktop/test1.csv")


test1_r <- read_csv("~/Desktop/test1.csv")
test1_r %>% str() 
#should fail here
test1_r %>% filter(hp>100)


test1.r <- read.csv("~/Desktop/test1.csv")
test1.r %>% str() 
test1.r %>% filter(hp>100)

To solve the problem, you can use read.csv as mentioned above by @hackR. Or you can subset out the first column when you know the csv behaves like this:

test1_r <- read_csv("~/Desktop/test1.csv")[-1]

Or, if you are in control of the csv-creation step, you can add the option row.names=FALSE to write.csv

mtcars %>% write.csv("~/Desktop/test2.csv", row.names = FALSE)
test2.r <- read_csv("~/Desktop/test2.csv")
test2.r %>% str() 
test2.r%>% filter(hp>100)

or use write_csv as shown above.

  • Редакция Кодкампа

17 авг. 2022 г.
читать 1 мин


Одно сообщение об ошибке, с которым вы можете столкнуться при использовании R:

Error in if (x < 10) { : argument is of length zero

Эта ошибка обычно возникает, когда вы пытаетесь выполнить какое-либо логическое сравнение в операторе if в R, но переменная, которую вы используете для сравнения, имеет нулевую длину.

Двумя примерами переменных с нулевой длиной являются numeric() или character(0) .

В следующем примере показано, как устранить эту ошибку на практике.

Как воспроизвести ошибку

Предположим, мы создаем следующую числовую переменную в R с нулевой длиной:

#create numeric variable with length of zero
x <- numeric()

Теперь предположим, что мы пытаемся использовать эту переменную в операторе if:

#if x is less than 10, print x to console
if(x < 10 ) {
 x
}

Error in if (x < 10) { : argument is of length zero

Мы получаем ошибку, потому что переменная, которую мы определили, имеет нулевую длину.

Если бы мы просто создали числовую переменную с фактическим значением, мы бы никогда не получили эту ошибку при использовании оператора if:

#create numeric variable
y <- 5

#if y is less than 10, print y to console
if(y < 10 ) {
 y
}

[1] 5

Как избежать ошибки

Чтобы избежать ошибки аргумента нулевой длины , мы должны включить функцию isTRUE , которая использует следующую логику:

is. logical (x) && length(x) == 1 && !is. na (x) && x

Если мы используем эту функцию в операторе if, мы не получим ошибку при сравнении нашей переменной с некоторым значением:

if(isTRUE(x) && x < 10 ) {
 x
}

Вместо того, чтобы получить ошибку, мы просто не получаем вывода, потому что функция isTRUE(x) оценивается как FALSE , что означает, что значение x никогда не печатается.

Дополнительные ресурсы

В следующих руководствах объясняется, как исправить другие распространенные ошибки в R:

Как исправить в R: аргументы подразумевают разное количество строк
Как исправить в R: ошибка выбора неиспользуемых аргументов
Как исправить в R: замена имеет нулевую длину

Когда я создаю новый файл rmarkdown (или открываю существующие файлы rmarkdown) и пытаюсь запустить блок rmarkdown, я получаю следующую ошибку: «Ошибка: попытка использовать имя переменной нулевой длины». У меня Win10, и вчера я сделал новую установку R и Rstudio. Что я пропустил? Откуда эта ошибка?

```{r cars}
summary(cars)
```

« `{r cars} Ошибка: попытка использовать имя переменной нулевой длины

введите описание изображения здесь

person
SEMson

   schedule
12.09.2017

   source
источник


Ответы (5)

В качестве ответа для наглядности: это произойдет, если вы попытаетесь запустить, выбрав все в Rmd и нажав Enter, как в обычном сценарии R. RStudio пытается запустить все это как код R, включая части уценки, что приводит к обнаруженным вами ошибкам.

Вы можете избежать этого, запустив отдельный блок, нажав зеленую кнопку воспроизведения или выбрав один из параметров запуска в раскрывающемся списке в верхней части редактора Rmd.

person
Donovan192

   schedule
14.02.2018

Проблема могла быть из-за того, что объект был изменен в глобальной среде в более раннем сеансе, и этот сеанс был сохранен в глобальной среде. Лучше ничего не сохранять в глобальной среде при завершении сеанса Rstudio (или консоли R). Один из вариантов — снова вызвать data(cars), чтобы получить исходный набор данных.

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-выход введите здесь описание изображения

Один из способов избежать подобных сюрпризов — использовать параметр «Не сохранять» при выходе из сеанса.

введите описание изображения здесь

person
akrun

   schedule
12.09.2017

Для меня проблема заключалась в том, что у меня отсутствовала обратная кавычка в закрывающем блоке кода. Другими словами, это выглядело так (обратите внимание, что закрывающих обратных кавычек всего две, а не три, как должно быть).

```{r}
# do some stuff
``

Таким образом, две обратные кавычки обрабатывались как часть блока кода, который является допустимым кодом для предоставления имени переменной, например,

`+`

Но поскольку между обратными кавычками не было указано имя переменной, я получал ошибку «попытка использовать имя переменной нулевой длины».

person
dpritch

   schedule
18.05.2020

В моей R Studio был следующий код для подавления некоторых предупреждений. Я хотел скрыть весь возможный вывод, но при этом оценить код, например, скрыть текстовый вывод (results = ‘hide’), скрыть предупреждения, скрыть сообщения.

```{r message=FALSE, warning=FALSE, results='hide'}

Когда я избавился от этих строк, я тоже перестал получать ошибку.

Надеюсь, это поможет.

Я по-прежнему получаю ту же ошибку, не могли бы вы помочь? Я пытаюсь скопировать код для Ирана из https://github.com/timchurch/blog/blob/master/_posts/2020-02-18-analysing-covid-19-2019-ncov-outbreak-data-with-r-part-1/analysis-covid-19-2019-ncov-outbreak-data-with-r-part-1.Rmd.

person
Amit

   schedule
14.09.2019

Этот подход включает в себя выбор (выделение) только кода R (сводка (давление)), а не любых обратных кавычек / ограждений из фрагмента кода. (Если вы видите ошибку: попытка использовать имя переменной нулевой длины, это потому, что вы случайно выделили обратные кавычки вместе с кодом R …….. source: https://rstudio-conf-2020.github.io/r-for-excel/rstudio.html

person
Dr.Sundeep Deulkar

   schedule
15.10.2020

Вопрос:

Я работаю над моими умениями моделирования, и у меня есть выход в Black Scholes. Идея заключается в использовании текущих опционных цен (x) для получения оценки волатильности (b).

Когда я запускаю nlsLM, я получаю эту ошибку:

Error in assign(i, data[[i]], envir = env) :
attempt to use zero-length variable name

Я не вижу, где ошибка, я удалил все переменные из формулы и заменил их численными значениями для этого конкретного случая. x и b остаются переменными. Я запустил это без d1 и d2, другими словами, поместив длинные формулы для каждого внутри соответствующего pnorm(), но также не повезло.

x – цена исполнения, y – цена звонка GOOG, истекающего 12/20/14 по состоянию на 12/12/14.

Вот код для воспроизведения ошибки.

df <- structure(list(x = c(505, 510, 512.5, 515, 517.5, 520, 522.5,
525, 527.5, 530, 532.5), y = c(17.7, 12.5, 12, 9.2, 7.82, 6.3,
5.1, 4.1, 3.21, 2.45, 1.9)), .Names = c("x", "y"),
row.names = c(NA, -11L), class = "data.frame")

f <- function(x, b){
d1 = (1/(b*sqrt(0.021918)))*(log(518.66/x) + (0.0025+b^2/2) * 0.021918)
d2 = (1/(b*sqrt(0.021918)))*(log(518.66/x) - (0.0025+b^2/2) * 0.021918)
return (pnorm(d1)*518.66 - pnorm(d2)*x*exp(-0.0025*0.021918))
}

library(minpack.lm)
test <- nlsLM(y~f(x, b), data=df, start=list((b=0.50)))

Спасибо.

Лучший ответ:

Найден ответ… В функции nlsLM есть строка:

 for (i in names(start)) assign(i, start[[i]], envir = startEnv)

Проблема заключалась в том, что начало, указанное в моей формуле, не имело названия, б. Я подумал, используя команду list, которая разрешит проблему.

Я исправил это следующим образом:

test <- nlsLM(y~f(x, b), data=df, start=c(b=0.50))

Когда я создаю новый файл rmarkdown (или открываю существующие файлы rmarkdown) и пытаюсь запустить блок rmarkdown, я получаю следующую ошибку: «Ошибка: попытка использовать имя переменной нулевой длины». У меня Win10, и вчера я сделал новую установку R и Rstudio. Что я пропустил? Откуда эта ошибка?

```{r cars}
summary(cars)
```

« `{r cars} Ошибка: попытка использовать имя переменной нулевой длины

введите описание изображения здесь

person
SEMson
  
schedule
12.09.2017
  
source
источник


Ответы (5)

В качестве ответа для наглядности: это произойдет, если вы попытаетесь запустить, выбрав все в Rmd и нажав Enter, как в обычном сценарии R. RStudio пытается запустить все это как код R, включая части уценки, что приводит к обнаруженным вами ошибкам.

Вы можете избежать этого, запустив отдельный блок, нажав зеленую кнопку воспроизведения или выбрав один из параметров запуска в раскрывающемся списке в верхней части редактора Rmd.

person
Donovan192
  
schedule
14.02.2018

Проблема могла быть из-за того, что объект был изменен в глобальной среде в более раннем сеансе, и этот сеанс был сохранен в глобальной среде. Лучше ничего не сохранять в глобальной среде при завершении сеанса Rstudio (или консоли R). Один из вариантов — снова вызвать data(cars), чтобы получить исходный набор данных.

---
title: "Untitled"
output:
  html_document: default
  'html_document:': default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars}
data(cars)
summary(cars)

-выход введите здесь описание изображения

Один из способов избежать подобных сюрпризов — использовать параметр «Не сохранять» при выходе из сеанса.

введите описание изображения здесь

person
akrun
  
schedule
12.09.2017

Для меня проблема заключалась в том, что у меня отсутствовала обратная кавычка в закрывающем блоке кода. Другими словами, это выглядело так (обратите внимание, что закрывающих обратных кавычек всего две, а не три, как должно быть).

```{r}
# do some stuff
``

Таким образом, две обратные кавычки обрабатывались как часть блока кода, который является допустимым кодом для предоставления имени переменной, например,

`+`

Но поскольку между обратными кавычками не было указано имя переменной, я получал ошибку «попытка использовать имя переменной нулевой длины».

person
dpritch
  
schedule
18.05.2020

В моей R Studio был следующий код для подавления некоторых предупреждений. Я хотел скрыть весь возможный вывод, но при этом оценить код, например, скрыть текстовый вывод (results = ‘hide’), скрыть предупреждения, скрыть сообщения.

```{r message=FALSE, warning=FALSE, results='hide'}

Когда я избавился от этих строк, я тоже перестал получать ошибку.

Надеюсь, это поможет.

Я по-прежнему получаю ту же ошибку, не могли бы вы помочь? Я пытаюсь скопировать код для Ирана из https://github.com/timchurch/blog/blob/master/_posts/2020-02-18-analysing-covid-19-2019-ncov-outbreak-data-with-r-part-1/analysis-covid-19-2019-ncov-outbreak-data-with-r-part-1.Rmd.

person
Amit
  
schedule
14.09.2019

Этот подход включает в себя выбор (выделение) только кода R (сводка (давление)), а не любых обратных кавычек / ограждений из фрагмента кода. (Если вы видите ошибку: попытка использовать имя переменной нулевой длины, это потому, что вы случайно выделили обратные кавычки вместе с кодом R …….. source: https://rstudio-conf-2020.github.io/r-for-excel/rstudio.html

person
Dr.Sundeep Deulkar
  
schedule
15.10.2020

Вопрос:

Я работаю над моими умениями моделирования, и у меня есть выход в Black Scholes. Идея заключается в использовании текущих опционных цен (x) для получения оценки волатильности (b).

Когда я запускаю nlsLM, я получаю эту ошибку:

Error in assign(i, data[[i]], envir = env) :
attempt to use zero-length variable name

Я не вижу, где ошибка, я удалил все переменные из формулы и заменил их численными значениями для этого конкретного случая. x и b остаются переменными. Я запустил это без d1 и d2, другими словами, поместив длинные формулы для каждого внутри соответствующего pnorm(), но также не повезло.

x – цена исполнения, y – цена звонка GOOG, истекающего 12/20/14 по состоянию на 12/12/14.

Вот код для воспроизведения ошибки.

df <- structure(list(x = c(505, 510, 512.5, 515, 517.5, 520, 522.5,
525, 527.5, 530, 532.5), y = c(17.7, 12.5, 12, 9.2, 7.82, 6.3,
5.1, 4.1, 3.21, 2.45, 1.9)), .Names = c("x", "y"),
row.names = c(NA, -11L), class = "data.frame")

f <- function(x, b){
d1 = (1/(b*sqrt(0.021918)))*(log(518.66/x) + (0.0025+b^2/2) * 0.021918)
d2 = (1/(b*sqrt(0.021918)))*(log(518.66/x) - (0.0025+b^2/2) * 0.021918)
return (pnorm(d1)*518.66 - pnorm(d2)*x*exp(-0.0025*0.021918))
}

library(minpack.lm)
test <- nlsLM(y~f(x, b), data=df, start=list((b=0.50)))

Спасибо.

Лучший ответ:

Найден ответ… В функции nlsLM есть строка:

 for (i in names(start)) assign(i, start[[i]], envir = startEnv)

Проблема заключалась в том, что начало, указанное в моей формуле, не имело названия, б. Я подумал, используя команду list, которая разрешит проблему.

Я исправил это следующим образом:

test <- nlsLM(y~f(x, b), data=df, start=c(b=0.50))

  • Ошибка попытка доступа к процессу выполняющему процедуру завершения
  • Ошибка попытайтесь задать винтовой канал другим образом
  • Ошибка попробуйте через несколько минут инстаграмм
  • Ошибка попробуйте позже теле2
  • Ошибка попробуйте позже вк ретаргетинг