R:data.frameから値のペアをプリントアウトする最も簡単な方法は何ですか?
質問
私は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
所属していません StackOverflow