私は4つの項目があります。各アイテムには、各ロケーションのデータを含むランダムな数のロケーションがあります。私のコードは、場所をループし、位置データのデータフレームを作成します。その場所のデータを取得して対応するアイテムのデータフレームに配置し、そのアイテムの次の場所に移動すると、そのアイテムのデータフレームに追加されます。アイテムがアイテムデータフレームに追加されました。次のアイテムに移動し、別々の名前のデータフレームのプロセスを繰り返す必要があります。たとえば、アイテム1のデータフレームはitem1という名前で、アイテム2のデータフレームはitem2という名前でなければなりません。これを達成するためにassignおよびpaste0関数を使用しましたが、paste0は文字列を作成し、assign関数は認識しません私はデータを文字列ではなくデータフレームに割り当てたいと思っています。サンプルコードは以下に掲載されており、提供できる援助は非常に高く評価されています。forループでの割り当て
for (p in 1:4) # 1-4 because there are 4 items
{
#Initialize the item data frame
assign(paste0("item",p),data.frame(item_no=character(), x=integer(), y=integer(), data_val=integer()))
#Loop through all locations for this item ID
num_locations = sample(1:9,1) #Number of locations
for (i in 1:(num_locations)){ #Loop through each location
#Access data for current location (pulls from a database in actual code)
##################################################
item_no <- p
x <- sample(-3:3,1)
y <- sample(-3:3,1)
data_val <- sample(0:100,1)
##################################################
#################DATA FRAME######################
assign(paste0("location_data",i),data.frame(item_no, x, y, data_val))
assign(paste0("item",p), data.frame(rbind(paste0("item", p), paste0("location_data", p))))
#paste0 creates a string and therefore is not recognized that I want to call the data within itemp or location_datap
#rbind needed because the loop through impact locations for a single item requries initialization of an empty data frame
#for the first time through the location loop, the empty itemp data frame is overwritten by the location_datap data frame and supplemented each location thereafter
################################################
}
}
あなたの質問はあまり明確ではなく、問題を解決する簡単な方法があります。 assign文の使用は一般的に推奨されません。私は、データフレームのリスト(下記の回答を参照)またはあなたのアイテム番号の余分な列を持つ大きなデータフレームを提案します。それはあなたの将来の分析要件に依存します。 – Dave2e