R:data.frameから値のペアをプリントアウトする最も簡単な方法は何ですか?

StackOverflow https://stackoverflow.com/questions/2488853

  •  21-09-2019
  •  | 
  •  

質問

私はdata.frameを持っています:

df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4))

> df
      a b
    1 x 1
    2 x 2
    3 y 3
    4 y 4

は、このような文字列のリストとして値の各ペアをプリントアウトするための最も簡単な方法何ます:

  

"X1"、 "X2"、 "Y1"、 "Y2"

役に立ちましたか?

解決

apply(df, 1, paste, collapse="")

他のヒント

with(df, paste(a, b, sep=""))

そして、この速いapplyよりもする必要があります。

のタイミングについて

我々が得る10000行については、

df <- data.frame(
    a = sample(c("x","y"), 10000, replace=TRUE),
    b = sample(1L:4L, 10000, replace=TRUE)
)

N = 100
mean(replicate(N, system.time( with(df, paste(a, b, sep="")) )["elapsed"]), trim=0.05)
# 0.005778
mean(replicate(N, system.time( apply(df, 1, paste, collapse="") )["elapsed"]), trim=0.05)
# 0.09611

速度の向上そうは数千のために表示されている。
個別行ごとのシェーンのソリューションコールpasteからです。だから私の溶液中のnrow(df)paste呼び出しがあり、1つのコールです。

また、あなたがsqldfライブラリを使用することができます:

library("sqldf")
df<-data.frame(a=c("x","x","y","y"),b=c(1,2,3,4))
result <- sqldf("SELECT a || cast(cast(b as integer) as text) as concat FROM df")

あなたは次のような結果が得られます

  concat
1 x1
2 x2
3 y3
4 y4
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top