-2

同じ次元の 5 つのバイナリ ファイル (ラスター) があります。最初の 4 つのファイルはパラメーター 1 を表し、5 番目のファイルは 10 クラスの土地被覆マップを表します。土地被覆クラスに基づいて 4 つのファイルすべての平均を計算したいと考えています。最終的に、各クラスに対応する 4 つの値を取得します。

すべてのファイルに対してこれを試しました:

  dir1<- list.files("C:\filesh", "*.img", full.names = TRUE)
  fre <- file("C:\\landover_from Suj1440a.bin","rb")
  sdf<- readBin(fre, integer(), size=1,  n=1440*720, signed=F)
  results<- list()
 for (.files in seq_along(dir1)){
   list1 <- readBin(dir1[.files], numeric(), size = 4, n = 1440*720, signed = TRUE)   
   list1=tapply(list1, sdf, mean, na.rm=TRUE)
   results[[length(results) + 1L]]<- list1}

エラーなしで動作したようです。: 結果を書き込むには:

  for (i in seq_along(results)){
  write.table(results[[i]], paste("C:\\Users\\filesh\\data", ".txt", sep=""),append=TRUE)}

次のようなすべての結果を含む 1 つのテキスト ファイルを取得します。

 x
  1     0.2
  2     0.5
  3     0.2
 x
 1      0.1 
 2      0.5
 3      0.6

4-出力を、次のようなすべての結果を含む 1 つのテキスト ファイルにしたいと考えています。

             1    2    3    4   5   6  7 ...
 x            0.2 0.5   0.2  .   .   .  . ...
 x            0.1  0.5  0.6
 x            .    .    .   .   .    .  . ...
 x            .

私の検索から、探しているものを取得するには、それらをデータフレームとして記述する必要があることがわかりました。

4

2 に答える 2

3

したがって、結果はリストのように見えます...フォーマット/クリーニングを行って、write.table呼び出しを1つ作成しないのはなぜですか?

ここに例を示しますが、再現可能な例を提供していないため、失敗する可能性があります。

# create data
df <- read.table(header = TRUE, text = "'x'
'0' 0.16
'2' 0.15
'3' 0.16
'4' 0.10
'5' 0.18
'6' 0.02
'7' 0.11
'8' 0.06
'9' 0.07
'10' 0.17
'11' 0.06
'12' 0.07")

# make list
df_list <- list(df, df)


# merge columns
out <- do.call(cbind, df_list)
names(out) <- paste0('x', 1:ncol(out))

# transpose
out_t <- t(out)
write.table(out_t, 'data.txt')
于 2013-03-11T17:35:37.807 に答える
2

何らかの理由で削除した以前の質問から、次を使用できますrbind

> r= c(5,4,5,4,2,5)
> s= c(5,4,5,4,2,5)
> rbind(r, s)
  [,1] [,2] [,3] [,4] [,5] [,6]
r    5    4    5    4    2    5
s    5    4    5    4    2    5
> write.table(rbind(r, s), file = "myfile.txt")

と が「results」という名前のリストにあると仮定するとrsこの質問の場合のように見えます。

> results <- list(r = r, s = s)
> results
$r
[1] 5 4 5 4 2 5

$s
[1] 5 4 5 4 2 5

> write.table(do.call(rbind, results), file = "myfile.txt")
于 2013-03-11T17:35:04.877 に答える