4

格納されている変数の名前に月の名前を取り入れようとしています。

import <- function(month) {
  dataobj <- letters
  assign("x", dataobj)
  save("x", file="data.rda")
}

動作します。しかし、以下は機能しません -

import <- function(month) {
  dataobj <- letters
  assign(substr(month, 1, 3), dataobj)
  save(substr(month, 1, 3), file="data.rda")
}

save()は"x"を受け入れますが、substr(month, 1, 3)は受け入れないようです。

これを修正する方法はありますか?

4

2 に答える 2

6

list引数を使用save():

save(list=substr(month,1,3), file="data.rda")
于 2012-05-07T09:09:09.647 に答える
5

特定の月に依存する名前で環境内にオブジェクトを作成する代わりに、名前として使用されるオブジェクトのリストをmonth使用します。

dat = lapply(1:4, function(x) letters)
names(dat) = c("Jan","Feb","Mar","Apr")
> dat
$Jan
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" 
[20] "t" "u" "v" "w" "x" "y" "z"                                                 

$Feb                                                                             
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" 
[20] "t" "u" "v" "w" "x" "y" "z"                                                 

$Mar                                                                             
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" 
[20] "t" "u" "v" "w" "x" "y" "z"                                                 

$Apr                                                                             
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" 
[20] "t" "u" "v" "w" "x" "y" "z"  

このリストの保存は、 を使用して簡単に行うことができますsave(dat)。月を別々のオブジェクトに保存したい場合:

lapply(names(dat), function(month) {
  save(dat[[month]], file = sprintf("%s.rda", month)
 })

または、古き良き for ループを使用します。

for(month in names(dat)) {
  save(dat[[month]], file = sprintf("%s.rda", month)
} 
于 2012-05-07T08:14:15.970 に答える