在数据帧内重新编码/重命名数据,而grep用于选择某些变量

时间:2011-03-29 02:06:54

标签: r replace grep dataframe

在我的数据框中,我只选择变量test3-test8

data[,grep('(test[3-8]+$)',names(data)),]

现在我想用"1"替换"2"。根据{{​​1}}我试过:

df[ df == "1" ] = "2"

那不起作用。

  

data[,grep('(test[3-8]+$)',names(data)),][ data[,grep('(test[3-8]+$)',names(data)),] == "1" ] = "2" 中的错误([<-.data.frame,grep(“(^ dv_beh_ [0-9] + r)”,名称(数据)),: unused arguments(s)()

我的错误是什么?

1 个答案:

答案 0 :(得分:3)

消除多余的逗号(指定数据框的选项,但不列出任何选项),错误就消失了:

dtf <- data.frame(test1=runif(10))
dtf <- cbind(dtf,dtf)
dtf <- cbind(dtf,dtf)
dtf[3,3] <- 1
names(dtf) <- paste("test",seq(ncol(dtf)),sep="")
names.sel <- grep('(test[3-8]+$)',names(dtf))
dtf[,names.sel][ dtf[,names.sel] == 1 ] <- 2
stopifnot(dtf[3,3]==2)

为了证明这就是问题,我可以用以下内容重现错误:

data[,names.sel,][ data[,names.sel] == 1 ,] <- 2
Error in `[<-.data.frame`(`*tmp*`, , grep("(test[3-8]+$)", names(data)),  : 
  unused argument(s) ()