0

特定のセルを読み取る必要がある Excel スプレッドシートがたくさんあります。すべてのワークブックとワークシートを通過するループを作成しましたが、単純化するために、以下の質問ではループを省略しました。

すべてのワークシートまたはセルにデータが入力されるわけではありませんが、セルが空白の場合、XLConnect は空のデータ フレームを返すため、エラーが発生します。

再現するにxlsxは、作業ディレクトリに というファイルを作成しますtestFile.xlsx。で、セルとにSheet1必要なものを入力し、ファイルを保存して閉じます。次に、以下のコードを実行します。A1B2

# Load packages
library(XLConnect)

# Define positions to read
positionsToRead = c('A1', 'B2')

# This will work as A1 and B2 have data
data.frame(sapply(positionsToRead, function(x) readWorksheetFromFile("testFile.xlsx",  sheet='Sheet1', region=x, header=FALSE)))

# Change positions to read
positionsToRead = c('A1', 'B2', 'C3')

# This will fail, as C3 has no data
data.frame(sapply(positionsToRead, function(x) readWorksheetFromFile("testFile.xlsx",  sheet='Sheet1', region=x, header=FALSE)))

最初は次のように返されます。

  A1.Col1 B2.Col1
1   data1   data2

2 番目は以下を返します。

Error in data.frame(A1 = list(Col1 = "data1"), B2 = list(Col1 = "data2"),  : 
  arguments imply differing number of rows: 1, 0

これを機能させる方法はありますか?検索したところ、 に機能がXLConnectあることがわかりましたが、SetMissingto のような文字列を定義するためのもののようblankですNA

4

1 に答える 1