私はRパッケージのhead(d)メソッドとtail(d)メソッドを頻繁に使用します-頻繁に次々に使用します。そこで、2つの関数の単純なラッパーを作成しました。
ht <- function(d, m=5, n=m){
# print the head and tail together
cat(" head --> ", head(d,m), "\n", "--------", "\n", "tail --> ", tail(d,n), "\n")
}
そして、私はいくつかの予期しない結果を得ました。誰かが私に理由を理解するのを手伝ってもらえますか?(だから私はそれを修正するか、少なくともあなたの解決策を理解することができます!)
いくつかの背景...
数値は正常に機能します。
x <- 1:100
ht(x)
複雑です:
ni <- as.complex(1:100)
ht(ni)
と文字:
ll <- letters[1:26]
ht(ll)
行列はその構造を失い、[1,1]から[5,5] + [16,1]から[20,5]に戻りますが、2つのベクトルとして-比較します。
m <- matrix(1:10, 20)
ht(m)
に:
head(m, 5)
tail(m,5)
utilsメソッドと同じように、マトリックス構造を維持したいのですが、これは可能ですか?
最後に(まあ、もっと多くのバグがあるかもしれません、これはちょうど私がしているところです)data.framesは混乱しています:
df <- data.frame(num=x[1:26], char=ll)
ht(df)
これにより、次のエラーが発生します。
head --> Error in cat(list(...), file, sep, fill, labels, append) :
argument 2 (type 'list') cannot be handled by 'cat'
これまでの手順:
utilsメソッドは、ビット単位で実行するとマトリックスを整然と保つため、次の編集で問題を修正しようとしました。
function(d, m=5, n=m){
# print the head and tail together
rb <- rbind(head(d, m), tail(d,n))
if (class(d) == 'matrix'){
len <- nrow(rb)
cat(" head --> ", rb[(1:m),], "\n", "--------", "\n", "tail --> ", rb[((len-n):len),], "\n")
}
else cat(" head --> ", rb[1,], "\n", "--------", "\n", "tail --> ", rb[2,], "\n")
}
これはマトリックスに何もしていないようで、使用すると同じエラーで壊れます:
ht(df)
ここでcat()に問題があるとエラーから推測していますが、それが何であるか、またはそれを修正する方法がわかりません。
誰か助けてもらえますか?