`не удалось найти функцию" get <- "` при попытке добавить новый столбец - PullRequest
0 голосов
/ 20 сентября 2018

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

varname <- "vehicles"

assign(
  x = varname,
  value = cars
)

get(varname)

get(varname)$AnotherCol <- "Test"

Но когда я запускаю этот код, я получаю эту ошибку.

Error in get(varname)$AnotherCol <- "Test" : 
  could not find function "get<-"

Как добавить столбец в переменную, которую я создал с помощью assign()?

1 Ответ

0 голосов
/ 20 сентября 2018

Если нам действительно нужно создать новый столбец на основе строкового объекта varname, то вызовите assign второй раз и назначьте ([[<-) новый столбец "AnotherCol" с value "Test"

assign(varname, `[[<-`(get(varname), "AnotherCol", value = "Test"))
head(get(varname))
#  speed dist AnotherCol
#1     4    2       Test
#2     4   10       Test
#3     7    4       Test
#4     7   22       Test
#5     8   16       Test
#6     9   10       Test

ПРИМЕЧАНИЕ. Это не рекомендуемый способ.Это можно сделать без использования assign или get.Предполагая, что присвоение происходит из цикла, может быть лучше создать один list вместо создания нескольких объектов в глобальной среде

Например, можно создать «AnotherCol» со ​​значением «Test»в list наборах данных с помощью base R методов

lapply(list(cars, mtcars), transform, AnotherCol = "Test")

или с использованием tidyverse методов

library(tidyverse)
lst(cars, mtcars) %>%
       map(mutate, AnotherCol = "Test")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...