-2

私はマトリックスを持っています: https://dl.dropbox.com/u/22681355/mat.csv

mat<-read.csv("mat.csv")
sub<-c(123,132)

mat$V2=sub である行の mat の 7 列目の値を変更したいと思います

以下を使用して、このサブセットを選択できます。

set<- subset(mat, mat$V2 %in% sub)
set[,7]<-set[,7]+1

そして、どういうわけか「セット」を「マット」の同じ行と一致させます。

しかし、これを行う簡単な方法はありますか?

4

2 に答える 2

1
   mat[7] <- mat[7] + mat$V2 %in% sub

トリックを行います。


列の値を変更したい場合V7:

mat["V7"] <- mat["V7"] + mat$V2 %in% sub
于 2012-12-13T11:14:18.100 に答える
0

あなたはいくつかのツートリアルを見るべきです

# download and read in your file from dropbox
tf <- tempfile()
library(httr)
csvpage <- GET( "https://dl.dropbox.com/u/22681355/mat.csv" )
writeBin(content(csvpage, "raw"), tf )

# import the data into R
mat <- read.csv( tf )

# note read.csv creates a data frame not a matrix
class( mat )

# create your sub object
sub <- c(123,132)

# subset the matrix..

# show all rows where V2 is equal to any of the contents of sub
mat[ mat$V2 %in% sub , ]

# access only the V7 column for rows where V2 is equal to the contents of sub
mat[ mat$V2 %in% sub , 'V7' ]

# overwrite the V7 column with MISSING
# for rows where V2 is equal to the contents of sub
mat[ mat$V2 %in% sub , 'V7' ] <- NA

# OR

# overwrite the V7 column with the value of V2 (which matched something in sub)
# for rows where V2 is equal to the contents of sub
mat[ mat$V2 %in% sub , 'V7' ] <- mat[ mat$V2 %in% sub , 'V2' ]

# OR

# overwrite the V7 column with itself plus one
# for rows where V2 is equal to the contents of sub
mat[ mat$V2 %in% sub , 'V7' ] <- mat[ mat$V2 %in% sub , 'V7' ] + 1
于 2012-12-13T11:22:20.673 に答える