m = "jan"
n = "5e"
r = paste0("jan","5e","_results")
"jan5e_results"
Теперь я хочу использовать значение r и выбрать фрейм данных, потому что у меня есть фрейм данных с такими именами, как
jan5e_results
feb5e_results
mar5e_results
.
.
.
аналогично, как мне выбрать имя столбца из этих фреймов данных?
например
jan5e_results will have column name jan_var1
feb5e_results will have column name feb_var1
mar5e_results will have column name mar_var1
.
.
.
используя имена переменных, как выбрать фрейм данных и имя столбца, например
m = "jan"
n = "5e"
r = paste0("jan","5e","_results")
c = paste0(m,"var1")
r$c
Я спрашиваю об этом, потому что я пытаюсь сделать небольшую утилиту в блестящем, которая будет принимать входные данные, и на основе этого мне нужно выбрать конкретный фрейм данных и конкретный столбец. Если есть лучший способ, дайте мне знать.
Мы можем использовать get
col= paste0(m,"_var1")
get(r)[col]
# jan_var1
#1 1
#2 2
#3 3
#4 4
#5 5
get(r)
вернет весь фрейм данных с именем jan5e_results
, и из него мы выберем столбец col
для подмножества.
# jan_var1 b
#1 1 6
#2 2 7
#3 3 8
#4 4 9
#5 5 10
данные
jan5e_results <- data.frame(jan_var1 = 1:5, b = 6:10)
@newguy не уверен, что может быть не так. Можете ли вы добавить воспроизводимый пример?
Вы также можете сохранить все кадры данных в списке, а затем выбрать их следующим образом.
col= paste0(m,"_var1")
dflist[[r]][col]
# jan_var1
#1 1
#2 2
#3 3
#4 4
#5 5
преимущество этого подхода заключается в том, что вы также можете динамически создавать кадры данных. Я имею в виду: обычно вам нужно вводить имена фреймов данных, чтобы определить их, например, с помощью
jan5e_results <- data.frame(jan_var1 = 1:5, b = 6:10)
# here you can not define jan5e_results without actually writing jan5e_results
Но со списками вы можете просто создавать фреймы данных с именами, которые вы хотите им дать, внутри списка, подобного этому.
dflist[[r]] <- data.frame(matrix(rnorm(length(somevariable)), ncol= ncol(somedataframe)))
Чтобы иметь возможность воспроизвести здесь весь код, включая переменные из вашего вопроса
# deciding what elements to choose
r = paste0("jan","5e","_results")
m = "jan"
col = paste0(m,"_var1")
# vector with dataframe names
dfnames = paste0(c("jan", "feb", "mar"), "5e", "_results")
# creating an empty list
dflist = vector("list", length(dfnames))
# naming the list
names(dflist) = dfnames
# save one of the dataframes to list
dflist[[r]] = data.frame(jan_var1 = 1:5, b = 6:10)
Это не работает с SpatialPolygonsDataFrame
popup <- paste0("<strong>Name: </strong>", shpFile$SUBZONE_N, " ", shpFile_Proj[dfcolName])
> Ошибка в as.character.default(<объект S4 класса «SpatialPolygonsDataFrame»>): нет метода для приведения этого класса S4 к вектору