2016-09-15 55 views
-1

我有data.frame a,和變量名alist向量:應用功能來命名變量在data.frame

a <- data.frame(x1=rnorm(20),x2=rnorm(20),x3=rnorm(20),x4=rnorm(20),x5=rnorm(20),x6=rnorm(20),x7=rnorm(20),x8=rnorm(20),x9=rnorm(20),x10=rnorm(20)) 
alist<-c("x3","x4","x7","x9") 

如何申請一個函數來a,這樣只會影響變量alist中的名稱的方式不屬於a?這意味着alist中命名的a中的變量被替換爲該函數的輸出,其餘變量保持不變。

我總是可以運行一個函數,例如log(a[alist]),只是合併輸出與a,但是必須有更直接的方法嗎?

回答

0

一般情況下會:

a[,alist] <- sapply(a[,alist], ...) 
+0

謝謝。這工作。與'a [alist] < - log(a [alist])'類似。 –

0

以下工作:

a[alist] = apply(a[alist], 2, log) 

以上替換值登錄只有數據幀的那些列 「一」 是在 「ALIST」 規定。

+0

確實如此,但是如果我運行'apply(a [alist],2,log'),它將與'log(a [alist])'相同。這個輸出是'a'的一個子集,它不包含未受影響的變量。 –

+0

我編輯了我的答案。 – rnso