سؤال

وأنا باستخدام R لحلقة من خلال إطار البيانات وتنفيذ عملية حسابية وتقديم المؤامرة.

for(i in 2 : 15){
# get data
dataframe[,i]  

# do analysis

# make plot
a <- plot()
}

هل هناك طريقة أستطيع أن تجعل مؤامرة اسم الكائن "أ"، وذلك باستخدام قيمة 'ط'؟ على سبيل المثال، + "أنا" <- مؤامرة (). ثم أريد أن أضيف أن لناقلات ذلك لدي سلسلة من المؤامرات التي يمكنني ثم استخدامها في مرحلة لاحقة عندما كنت تريد أن تجعل من قوات الدفاع الشعبي. أو ربما هناك طريقة اخرى لتخزين هذه.

وأنا على دراية وظيفة لصق () ولكن أنا لم ترد على كيفية تحديد كائن استخدامه.

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في "ناقلات" للكائنات المؤامرة، وأسهل طريقة هي على الأرجح لتخزينها في list. استخدام paste() لإنشاء اسم للمؤامرة وثم إضافته إلى القائمة:

# Create a list to hold the plot objects.
pltList <- list()

for( i in 2:15 ){

  # Get data, perform analysis, ect.

  # Create plot name.
  pltName <- paste( 'a', i, sep = '' )

  # Store a plot in the list using the name as an index.
  # Note that the plotting function used must return an *object*.
  # Functions from the `graphics` package, such as `plot`, do not return objects.
  pltList[[ pltName ]] <- some_plotting_function()

}

إذا كنت لا تريد تخزين المؤامرات في قائمة وحرفيا يريد إنشاء كائن جديد الذي كان اسم وارد في pltName، ثم هل يمكن استخدام assign():

# Use assign to create a new object in the Global Environment
# that gets it's name from the value of pltName and it's contents
# from the results of plot()
assign( pltName, plot(), envir = .GlobalEnv )

نصائح أخرى

وإلقاء نظرة على lattice حزم أو ggplot2، وظائف المؤامرة في هذه الحزم خلق الأشياء التي يمكن أن تسند إلى المتغيرات ويمكن طباعتها أو تآمر في مرحلة لاحقة.

وعلى سبيل المثال مع lattice:

library("lattice")
i <- 1
assign(sprintf("a%d", i), xyplot(1:10 ~ 1:10))
print(a1) # you have to "print" or "plot" the objects explicitly

وأو إلحاق الكائنات إلى القائمة:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top