1

col4がcol5より小さいはずのRでデータフレームを使用していますが、そうでない場合があります。

とにかく、Rではかなり時間がかかるため、forloopを使用せずに値をcol4からcol5に、またはその逆にシフトできますか.

つまり、特定の行 col4 = 100 および col5=10 の場合、それらをシフトしたいと思います。col4 は 10 になり、col5 は 100 になるはずです。

ようこそ、よろしくお願いします!

4

3 に答える 3

4

データフレームの名前がdであると仮定します。

newCol4 <- pmin(d$col4, d$col5)
newCol5 <- pmax(d$col4, d$col5)

d$col4 <- newCol4
d$col5 <- newCol5
于 2012-11-20T01:47:33.933 に答える
2

論理インデックスと一時変数を使用してスワッピングを行うことができますか?

# find the rows where col4 >= col5 (or maybe >? depends on what you want)
idx <- data$col4 >= data$col5
# idx is TRUE for columns we want to swap.

# now do the swap:
# a) save data$col5
tmp <- data$col5[idx]
# b) replace data$col5 with the col4 values (where relevant)
data$col5[idx] <- data$col4[idx]
# c) replace data$col4 with our saved col5 values
data$col4[idx] <- tmp
于 2012-11-20T01:47:20.390 に答える
1
 indices <- which(data.frame.instance[,4]<data.frame.instance[,5])
 data.frame.copy <- data.frame.instance
 data.frame.copy[indices,5] <- data.frame.instance[indices,4]
 data.frame.instance[indices,5] <- data.frame.copy[indices,4]
 rm(data.frame.copy, indices)

あなたが望むことをするべきです-そしてforループはありません。

于 2012-11-20T01:47:36.867 に答える