Dollar sign before a variable

南楼画角 提交于 2019-11-28 20:01:55

问题


I have this sample code to create a new data frame 'new_data' from the existing data frame '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]))
    }
}

The problem is that my_data$cond (where cond is a variable, and not the column name) is not accepted.

How can I call a column of a data frame by using, after the dollar sign, a variable value?


回答1:


To access a column, use:

my_data[ , cond]

or

my_data[[cond]]

The ith row can be accessed with:

my_data[i, ]

Combine both to obtain the desired value:

my_data[i, cond]

or

my_data[[cond]][i]



回答2:


I guess you need get().

For example,
get(x,list), where list is the list and x is the variable(can be a string), which equals list$x.

But in get(x,list), x can be a variable while using $, x cannot be a variable.




回答3:


$ works on columns, not individual column objects. It's a form of vectorization. The code

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

converts the contents of the BookDate column of the corrections table from strings to Date objects. It performs it in one operation, assignment.

Do the following and it will fix your problem:

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



回答4:


You will often want to select an entire column, namely one specific variable from a data frame. If you want to select all elements of the variable diameter, for example, both of these will do the trick:

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

However, there is a short-cut. If your columns have names, you can use the $ sign:

dataframe_name$column_name


来源:https://stackoverflow.com/questions/12389318/dollar-sign-before-a-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!