結果をCSVファイルに保存する機能を拡張したい機能があります。lapplyを使用して関数に渡されたリストからdata.frameの名前を取得する方法
> my.func1(mtcars)
[1] "mtcars"
:私は、この関数に渡されたデータセットの名前が正しく解釈されている方法以下、この関数を呼び出すと
my.func1 <- function(dframe, ...){
# PART OF CODE RESPONSIBLE FOR COMPUTATION
# ...
# PART OF CODE WHERE I WANT TO STORE RESULTS AS CSV
csv <- deparse(substitute(dframe))
csv
}
:csvファイルの名前は、この関数に渡さdata.frame名前に基づいて生成されなければなりません
しかし、この関数をリストからdata.frameごとに呼び出す必要があります。
> LoDFs <- list(first=data.frame(y1=c(1,2,3), y2=c(4,5,6)), second=data.frame(yA=c(1,2,3), yB=c(4,5,6)))
> my.func1(LoDFs$first)
[1] "LoDFs$first"
問題がときである:私は、リストから特定のdata.frameため、この関数を呼び出した場合、それは基本的に取り組んでいる(私は醜い名前がリストの名前が、1つの回避策は、正規表現を使用して、それをトリミング可能性も含んで取得します)私はリストからすべてのdata.framesのためにこの関数を呼び出したい。この場合、data.frameの名前が混乱している:
> lapply(LoDFs, my.func1)
$first
[1] "X[[i]]"
$second
[1] "X[[i]]"
> lapply(seq_along(LoDFs), function(x) { my.func1(LoDFs[[x]]) })
[[1]]
[1] "LoDFs[[x]]"
[[2]]
[1] "LoDFs[[x]]"
私が間違ってやっているとどのように私は、正規表現での回避策に言及し、コードをより堅牢に回避することができますか?リスト内の各データフレームF
前回のスコープに頼るよりも、入力について、より具体的である
mapply
を使用することです、私はあきらめたと名前のベクトルを作りましたdata.frameを取得するためにget()を使用しました。あなたのために、 lapply(名前(LoDFs)、my.func1)のようなものです。ここで、my.funct1の最初の行はdf < - Lodf [[n]] です。 –