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