Знак доллара перед переменной

у меня есть этот пример кода для создания нового фрейма данных "new_data" из существующего фрейма данных "my_data".

new_data = NULL
n = 10 #this number correspond to the number of rows in my_data
conditions = c("Bas_A", "Bas_T", "Oper_A", "Oper_T") # the vector characters correspond to the target column names in my_data
for (cond in conditions){
    for (i in 1:n){
        new_data <- rbind(new_data, c(cond, my_data$cond[i]))
    }
}

проблема в том, что my_data$cond (где cond-переменная, а не имя столбца) не принимается.

как я могу вызвать столбец фрейма данных, используя после знака доллара значение переменной?

4 ответов


для доступа к столбцу используйте:

my_data[ , cond]

или

my_data[[cond]]

на ith строка может быть доступна с:

my_data[i, ]

объединить оба, чтобы получить желаемое значение:

my_data[i, cond]

или

my_data[[cond]][i]

Я думаю, вам нужно get().

например,
get(x,list), где list список и x является переменной (может быть строка), которая равна list$x.

а в get(x,list), x может быть переменной при использовании $, x не может быть переменной.


$ работает на столбцах, а не на отдельных объектах столбцов. Это форма векторизации. Код

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y")

преобразует содержание на corrections таблица из строк Date объекты. Он выполняет ее за одну операцию, задание.

сделайте следующее, И это исправит вашу проблему:

new_data <- rbind(new_data, c(cond, my_data$cond))

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

dataframe_name[,column_position]
dataframe_name[,"column_name"]

тем не менее, есть короткий путь. Если столбцы имеют имена, вы можете использовать $ вход:

dataframe_name$column_name