2

apply と R 3.0.1 で奇妙な問題が発生しています。

テキスト、数値、および論理値を含む巨大なデータフレームがあります。apply を使用すると、論理値は chr に変換されますが、R では TRUE == "TRUE" のようなものを使用できるため、これは問題ではありません。

しかし、一部の論理値では、apply のように先頭にスペースが追加され、TRUE == "TRUE" は NA を返します。もちろん、できました

sapply(cuelist[,4],FUN=function(logicalvalue) as.logical(sub("^ +", "", logicalvalue)))

しかし、それは良くありません.なぜRがそうするのかはまだわかりません.

df <- data.frame(test=c("a","b","<",">"),logi=c(TRUE,FALSE,FALSE,TRUE))
apply(df, MARGIN=1, function(listelement) print(listelement) )

興味深いことに、スペースはこの例では [2,1] と [2,4] にのみ表示されます。

バージョン _
プラットフォーム x86_64-w64-mingw32
arch x86_64
os mingw32
システム x86_64, mingw32
ステータス
メジャー 3
マイナー 0.1
年 2013
月 05
日 16
svn rev 62743
言語 R
version.string R バージョン 3.0.1 (2013-05-16) ニックネーム Good Sport

編集: R バージョン 2.15.0 (2012-03-30) で同じ動作

Edit2:私のデータフレームはこのように見えます

> df
  test  logi
1    a FALSE
2    b FALSE
3    <  TRUE
4    >  TRUE

> str(df)
'data.frame':   4 obs. of  2 variables:
 $ test: Factor w/ 4 levels "<",">","a","b": 3 4 1 2
 $ logi: logi  FALSE FALSE TRUE TRUE
4

2 に答える 2

1

データフレームをマトリックスに変換するのは間違いなくapplyによるものであるため、すべての要素は同じタイプ、ここでは文字であり、論理値はそれに変換されます。TRUE は、「FALSE」の文字数と一致するように「TRUE」に変換されます。

"FALSE"
" TRUE"

納得するには:

as.matrix(df)

代わりに、plyr パッケージの a*ply を使用できます。

a_ply(df, 1, print)
于 2013-09-04T13:07:50.387 に答える