Подтвердить что ты не робот

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

У меня есть этот образец кода для создания нового фрейма данных '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 - это переменная, а не имя столбца) не принимается.

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

4b9b3361

Ответ 1

Чтобы получить доступ к столбцу, используйте:

my_data[ , cond]

или

my_data[[cond]]

Доступ к i -й строке можно получить с помощью:

my_data[i, ]

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

my_data[i, cond]

или

my_data[[cond]][i]

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

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

dataframe_name$column_name