2016-09-28 12 views
1

Rの11列のリストの条件変更を実行しようとしています。私の条件は常にsurvey$only0 == 1です。サプリーまたはループを使用した繰り返しの条件変更

survey$w.house[survey$only0 == 1] <- 1 
survey$w.inc[survey$only0 == 1] <- 1 
survey$w.jobs[survey$only0 == 1] <- 1 
survey$w.com[survey$only0 == 1] <- 1 
survey$w.edu[survey$only0 == 1] <- 1 
survey$w.env[survey$only0 == 1] <- 1 
survey$w.health[survey$only0 == 1] <- 1 
survey$w.satisf[survey$only0 == 1] <- 1 
survey$w.safe[survey$only0 == 1] <- 1 
survey$w.bal[survey$only0 == 1] <- 1 
survey$w.civic[survey$only0 == 1] <- 1 

私のコードはうまく動作しますが、私はsapplyまたはlapplyとしてloopや関数を使って自分のコードを短くしたいと思います:私は、次のコードを書きました。誰もそれを行う方法を知っていますか?

ありがとうございました!

デビッド

答えて

2

私たちは、「only0が」1

survey[nm1] <- lapply(survey[nm1], function(x) replace(x, survey$only0==1, 1)) 
である1に(「NM1」)関心の列をループで lapplyで簡単にこれを行うと、それの replace値ことができます

それとも@Vloは、匿名関数呼び出しが

survey[nm1] <- lapply(survey[nm1], replace, list = survey$only0==1, values=1) 

を必要とされていません述べた通りである

+3

インデックスが固定されているため、無名関数を削除できます。 – Vlo

+0

@Vloはい、ありがとうございました – akrun

+0

これはまさに私が探していたものです。ありがとう!!! –

0

あなたが試すことができ

nm1 <- c("w.house", "w.inc", "w.jobs", "w.com", "w.edu", "w.env", 
    "w.health", "w.satisf", "w.safe", "w.bal", "w.civic") 
colsはあなたが条件を確認したい列です

survey[survey$only0 == 1, cols] <- 1 

cols <- c("w.house", "w.inc", "w.jobs", "w.com", "w.edu", "w.env", 
      "w.health", "w.satisf", "w.safe", "w.bal", "w.civic") 
関連する問題