2017-04-19 73 views
2

我希望將相同的值分配給data.frame中的多個變量。我在這裏查看了幾個看似相似的帖子,但似乎沒有解決我的具體問題。將相同的值分配給多個變量

Mass variable declaration and assignment in R?

Assign multiple new variables on LHS in a single line in R

下面是一個例子data.frame我想創建:

data = data.frame(
    a1 = 0.614, a2 = 0.614, a3 = 0.614, a4 = 0.614, a5 = 0.614, 
    a6 = 0.614, a7 = 0.614, a8 = 0.614, a9 = 0.614, a10 = 0.614, 
    c1 = -6.198, c2 = -6.198, c3 = -6.198, c4 = -6.198, c5 = -6.198, 
    c6 = -6.198, c7 = -6.198, c8 = -6.198, c9 = -6.198, c10 = -6.198, 
    d1 = 35.952, d2 = 35.952, d3 = 35.952, d4 = 35.952, d5 = 35.952, 
    d6 = 35.952, d7 = 35.952, d8 = 35.952, d9 = 35.952, d10 = 35.952) 

謝謝你的任何意見或協助。我更喜歡基於R的解決方案。對不起,如果答案是明顯的。

回答

7

怎麼樣(只要你想在輸出data.frame行中插入多個row.names):

data = data.frame(row.names = '1') 
data[paste0('a', 1:10)] = .614 
data[paste0('c', 1:10)] = -6.198 
data[paste0('d', 1:10)] = 35.952 

或(列名不會是完全正確的;感謝@Frank這裏簡化我的方法)

data.frame(a = .641, c = -6.198, d = 35.052)[ , rep(1:3, each = 10)] 
+0

這兩個答案都很好。我通常等24小時以上才能接受,但謝謝。 –

6

把一切都一氣呵成:

n <- 10 
setNames(
    data.frame(rep(list(0.641,-6.198,35.952), each=n)), 
    paste0(rep(c("a","c","d"),each=n), seq_len(n)) 
) 
+0

我看不出如何調整這個,如果我們想在輸出'data.frame'中多出一行(從頭開始,nvm,只需要正確聲明'list') – MichaelChirico

+1

@MichaelChirico - 代表(1,nrows),]'結束。 – thelatemail

+0

不錯,我在我的例子中,例如在給定的列中重複'c(.641,.58)'多次,但兩者都很容易適應這種方法 – MichaelChirico