これは明白であるべきですが、私はまだlapply
とその親戚の周りに私の心を持っていないし、私はこれではっきりと簡単な答えを見つけていませんまたはGoogle。 noobnessのための謝罪とだから、ここに行く:カラム名tolower()再帰的に(データフレームのリスト内で)
私は、複数の埋め込みでリストを持って、このようなビット(hereから再現性の一例を捕物):
lst <- structure(list(Df1 = structure(list(Df1 = structure(list(Date = structure(c(14611, 14612), class = "Date"), Ta_200 = c(10.0067787761421, 5.9095282339839)), .Names = c("Date", "Ta_200"), row.names = c(NA, -2L), class = "data.frame"), Df2 = structure(list(Date = structure(c(14611, 14612), class = "Date"), rH_200 = c(64.9115310510325, 90.8615907551521)), .Names = c("Date", "rH_200"), row.names = c(NA, -2L), class = "data.frame")), .Names = c("Df1", "Df2")), Df2 = structure(list(Df1 = structure(list(Date = structure(c(14642, 14643), class = "Date"), Ta_200 = c(9.91976687351846, 8.79129183854663)), .Names = c("Date", "Ta_200"), row.names = c(NA, -2L), class = "data.frame"), Df2 = structure(list(Date = structure(c(14642, 14643), class = "Date"), rH_200 = c(76.9297879127307, 75.8021788747459)), .Names = c("Date", "rH_200"), row.names = c(NA, -2L), class = "data.frame")), .Names = c("Df1", "Df2"))), .Names = c("Df1", "Df2"))
目標:すべてですべての列名を作ります小文字の場合はtolower()
を使用し、2〜3レベルの深さの再帰リストの場合(ここのように)私はリストの要素をループすることができますが、ループを回避してapply
ファミリとdplyr
ファミリからのものを使用するために、どこにでもある推奨事項に従おうとしています。
、私はこのようなダウンセカンドレベルのためlapply
を使用することができます。
lapply(lst, function(x) { names(x) <- tolower(names(x)) })
しかし:(1)私は、再帰的に第一及び第二(及び第3)レベルのためにこれを行う方法を理解しておらず、 (2)リスト項目に実際に新しい小文字の名前を書く方法がありません(上記の行は、それを返すだけです)。
'setNames'は役に立ちます:' lapply(lst、function(x){setNames(x、tolower(names(x)))}) 'これは一度に1レベルだけです。 – alistaire