Я потратил некоторое время, пытаясь понять, почему это не работает, но я просто не мог этого понять. Я работаю с пакетами sp в R и хочу преобразовать фрейм данных в SpatialPointsDataFrame, присвоив координаты с помощью функции координат. Фрейм данных должен вызываться динамически.
Следуя примеру данных "meuse":
> data(meuse)
> coordinates(meuse) <- ~x+y
> meuse
class : SpatialPointsDataFrame
features : 155
extent : 178605, 181390, 329714, 333611 (xmin, xmax, ymin, ymax)
coord. ref. : NA
variables : 12
names : cadmium, copper, lead, zinc, elev, dist, om, ffreq, soil, lime, landuse, dist.m
min values : 0.2, 14, 37, 113, 5.180, 0.00000000, 1.0, 1, 1, 0, Aa, 10
max values : 18.1, 128, 654, 1839, 10.520, 0.88038900, 17.0, 3, 3, 1, W, 1000
Это прекрасно работает. Однако попытка динамического вызова meuse не удалась:
> df <- "meuse"
> data(list = df)
> coordinates(get(df)) <- ~x+y
Error in coordinates(get(df)) <- ~x + y : could not find function "get<-"
Почему это не работает? И почему он пытается найти функцию "get <-"?
Мое обходное решение:
assign(df, `coordinates<-`(get(df), ~x+y))
Я не уверен, но я думаю, что это потому, что get (df) не является lvalue, то есть чем-то, чему вы можете присвоить значение.
«И почему он пытается найти функцию« get <- »?» cran.r-project.org/doc/manuals/r-release/…