2017-01-17 3 views
1

ちょうどgooglesheetsパッケージが見つかりました。私は今、既存のシートのコンテンツのすべてまたは一部を置き換えることができるようにしたいと考えています。R googlesheetsパッケージを使用して、Googleのすべてのコンテンツを置き換えますか?

例:

> library(googlesheets) 
> set.seed(10) 
> test1 <- data.frame(matrix(rnorm(10),nrow = 5)) 
> test1 
     X1   X2 
1 0.01874617 0.3897943 
2 -0.18425254 -1.2080762 
3 -1.37133055 -0.3636760 
4 -0.59916772 -1.6266727 
5 0.29454513 -0.2564784 

> gs_new("foo_sheet", input = test1, trim = TRUE) 

これは期待通りに新しいシートを作成します。シートを更新する必要があるとします(このデータは、shinyapps.ioホストされた光沢のあるアプリで使用されています。シート参照を変更するためにアプリを再デプロイする必要はありません)。

> test1$X2 <- NULL 
> test1 
     X1 
1 0.01874617 
2 -0.18425254 
3 -1.37133055 
4 -0.59916772 
5 0.29454513 

私は単にgs_new()で上書きされますが、次の警告メッセージに実行しようとした:

> gs_new("foo_sheet", input = test1, trim = TRUE) 

Warning message: 
At least one sheet matching "foo_sheet" already exists, so you may 
need to identify by key, not title, in future. 

これは新しいkeyで作成された新しいシートfoo_sheetになりますが、既存のシートを置き換えるものではありません更新されたシートを登録しようとすると、keyというエラーが発生します。

gs_title("foo_sheet") 

Error in gs_lookup(., "sheet_title", verbose) : 
"foo_sheet" matches sheet_title for multiple sheets returned by gs_ls() (which should reflect user's Google Sheets home screen). Suggest you identify this sheet by unique key instead. 

これは、後で新しいシートfoo_sheetgs_read("foo_sheet")でアクセスしようとすると、APIは新しいシートではなく元のシートを返します。

> df <- gs_read("foo_sheet") 
> df 
     X1   X2 
1 0.01874617 0.3897943 
2 -0.18425254 -1.2080762 
3 -1.37133055 -0.3636760 
4 -0.59916772 -1.6266727 
5 0.29454513 -0.2564784 

これは、1つの可能な解決策は、最初のgs_delete("test1")でシートを削除してから新しいものを作成することができることを私の理解です。代わりに、gs_edit_cells()で空のセルを空にすることもできますが、何らかの形の上書き機能が期待されていました。

ありがとうございます!

答えて

0

私は編集細胞機能が良い回避策であることを見つける:

gs_edit_cells(ss = "foo_sheet", ws = "worksheet name", input = test1, anchor = "A1" trim = TRUE, col_names = TRUE) 

左上隅にデータを固定することで、効果的に他のすべてのデータを上書きすることができます。トリム機能は、更新されないすべてのセルを削除します。

+0

'gs_edit_cells'には現在進行中の問題があります。それは何度かハングアップします。 –

関連する問題