1

これは非常に特殊な作業ですが、そこから学んだことは一般的に役立つと思います。タイム スタンプの奇妙に設計されたデータ セットを再形成する必要があり、基本インストールに付属のパッケージから操作する必要があります。説明するより見る方が簡単だと思います。

タイムスタンプ付きの名前付きベクトルのリスト:

x <- structure(list(A = c("2.40", ":", "3.00", "5.01", "6.62", ":", 
    "7.00", "9.00"), B = c("2.40", "5.01", "6.62", ":", "7.00", "9.00"
    ), C = c("2.40", ":", "3.00", "5.01", "6.62", ":", "7.00", "9.00"
    )), .Names = c("A", "B", "C"))

リストは次のようになります。

> x
[[1]]
[1] "2.40" ":"    "3.00" "5.01" "6.62" ":"    "7.00" "9.00"

[[2]]
[1] "2.40" "5.01" "6.62" ":"    "7.00" "9.00"

[[3]]
[1] "2.40" ":"    "3.00" "5.01" "6.62" ":"    "7.00" "9.00"

私が欲しいもの:

$A
     start      end  
1   "2.40"   "3.00"   
2   "5.01"   "5.01"    
3   "6.62"   "7.00"   
4   "9.00"   "9.00"  

$B
     start      end 
1   "2.40"   "2.40"   
2   "5.01"   "5.01"  
3   "6.62"   "7:00"   
4   "9.00"   "9.00"   

$C
     start      end 
1   "2.40"   "3.00"
2   "5.01"   "5.01" 
3   "6.62"   "7.00"
4   "9.00"   "9.00"

コロン (:) がある場所は、左側の要素が開始値で、右側の要素が終了値です。要素がコロンに接していない場合は、繰り返す必要があり、開始値と終了値の両方になります。

注:データフレームとマトリックスの場合、結果には引用符がありません

4

1 に答える 1

11

これは、あなたの望むことですか?

> lapply(x, function(v)
+   data.frame(start = v[-c(f <- which(v==":"), f + 1)], 
+              end = v[-c(f, f-1)]))
$A
  start  end
1  2.40 3.00
2  5.01 5.01
3  6.62 7.00
4  9.00 9.00

$B
  start  end
1  2.40 2.40
2  5.01 5.01
3  6.62 7.00
4  9.00 9.00

$C
  start  end
1  2.40 3.00
2  5.01 5.01
3  6.62 7.00
4  9.00 9.00
于 2012-10-18T07:35:37.143 に答える