web-dev-qa-db-ja.com

変数の前のドル記号

既存のデータフレーム「my_data」から新しいデータフレーム「new_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は変数であり、列名ではない)は受け入れられません。

ドル記号の後に変数値を使用して、データフレームの列を呼び出すにはどうすればよいですか?

25

列にアクセスするには、次を使用します。

my_data[ , cond]

または

my_data[[cond]]

ith行には、次の方法でアクセスできます。

my_data[i, ]

両方を組み合わせて、目的の値を取得します。

my_data[i, cond]

または

my_data[[cond]][i]
38
Sven Hohenstein

get()が必要だと思います。

例えば、
get(x,list)、ここでlistはリストで、xは変数(文字列でも可)で、_list$x_と等しくなります。

ただし、get(x,list)では、xを変数にすることができますが、_$_を使用すると、xを変数にすることはできません。

4
rankthefirst

多くの場合、列全体、つまりデータフレームから特定の1つの変数を選択します。たとえば、可変直径のすべての要素を選択する場合、これらの両方がトリックを実行します。

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

ただし、近道があります。列に名前がある場合は、$記号を使用できます。

dataframe_name$column_name
0
Naren

$は、個々の列オブジェクトではなく、列に対して機能します。これは、ベクトル化の形式です。コード

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

BookDateテーブルのcorrections列の内容を文字列からDateオブジェクトに変換します。割り当てという1つの操作で実行します。

以下を実行すると、問題が修正されます。

new_data <- rbind(new_data, c(cond, my_data$cond))
0
Jossie Calderon