[解決済み] Rの関数+Switch文。EXPR は長さ 1 のベクトルでなければならない
2022-02-09 20:06:13
質問
以下のコードでは、offshore_Sitesというデータフレームがすでに存在し、約1000件のレコードが含まれています。この関数を他のすべてのデータフレームに再利用できるようにするため、関数を作成しています。
データフレームはSQL Serverから取得します。現時点では offshore_Sites のみを取得していますが、他のデータフレームも同じように作成されます。
この関数は、内部にswitchステートメントを持ち、データフレームに応じて異なる変換を行うものです。offshore_Sitesの場合、例のようにいくつかのフィールドを連結する必要があります。
myStringConn <- "Driver=SQL Server;Server=SQL-SPATIAL;Database=AreasProt;Trusted_Connection=True;"
conn <- odbcDriverConnect(myStringConn)
offshore_Sites <- sqlQuery(conn, "select * from Offshore_Sites")
formatDataFrame <- function(dataframe) {
switch(dataframe, "offshore_Sites" = {
offshore_sites <- as.data.table(offshore_Sites)
offshore_sites <- setnames(offshore_sites, 1:6, c("status","country","region","area","long","lat"))
offshore_sites <- unique(offshore_sites[, list(status,
country = paste(sort(unique(country)), collapse = ' & '),
region = paste(sort(unique(region)), collapse = ' & '),
area,
long,
lat), by = code])
})
}
formatDataFrame(offshore_Sites)
しかし、これを実行すると、エラーが発生します。
エラー in switch(dataframe, offshore_Sites = { :
EXPR は長さ 1 のベクトルでなければなりません
何が起こっているのか、誰か理解していますか?
解決方法は?
今日、ちょっとひらめいたのですが、問題の所在がなんとなくわかりました。この関数は2つの変数、データフレーム名とデータフレームそのものを必要とします。
myStringConn <- "Driver=SQL Server;Server=SQL-SPATIAL;Database=AreasProt;Trusted_Connection=True;"
conn <- odbcDriverConnect(myStringConn)
offshore_Sites <- sqlQuery(conn, "select * from Offshore_Sites")
formatDataFrame <- function(dataframe, dataframeName) {
switch(dataframeName, "offshore_Sites" = {
offshore_sites <- as.data.table(dataframe)
offshore_sites <- setnames(offshore_sites, 1:6, c("status","country","region","area","long","lat"))
offshore_sites <- unique(offshore_sites[, list(status,
country = paste(sort(unique(country)), collapse = ' & '),
region = paste(sort(unique(region)), collapse = ' & '),
area,
long,
lat), by = code])
})
}
formatDataFrame(offshore_Sites, "Offshore_Sites")
たくさんのコメントありがとうございました :)
関連
-
[解決済み】基本 - T-検定 -> グループ化因子は正確に2水準でなければならない
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】rbind(deparse.level, ...)でエラー:引数の列の数がRにマッチしていない
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み] ヒートマップ作成時のエラー - 外部関数呼び出しでNA/NaN/Inf (arg 11)
-
[解決済み] テスト
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 不適合な配列のコードエラー
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】Rで「パッケージ'FILE_PATH'のインストールで終了ステータスが0でなかった」。
-
[解決済み】ベースグラフィックスでプロットエリアの外側に凡例をプロットする?
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
-
[解決済み】randomForestの実行予測で「NA/NaN/Inf in foreign function call (arg 7)」をなくすには?
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み】Rで相対的な頻度をプロットするためにhistをどのように使用しますか?
-
[解決済み】Rで「中断されたプロミスの評価を再開する」という警告を回避する