我剛剛在R中編程(或根本不懂),而且我幾天都遇到了一個問題。道歉,如果這個問題已經以某種形式存在,但我已盡最大努力,無法找到任何東西。R中的賦值函數子集數據
我有多個數據集稱爲pop1,pop2,pop3等,我試圖從for循環內爲它們的指定子集分配一個零值。經過反覆試驗,我發現代碼:
subset(get(paste("pop", 1, sep = "")), ind == 46, select = -ind)
返回我要找的子集,但是當我嘗試:
for (i in 1:3) {
assign(subset(get(paste("pop", i, sep = "")), ind == 46, select = -ind), 0)
}
我得到的錯誤信息:
#Error in assign(subset(get(paste("pop", i, sep = "")), ind == 46, select = -ind), :
#invalid first argument
在我看來,assign函數不會將子集作爲它的第一個參數,因爲以下任何一項都不是:
assign(pop1[46, -1], 0)
assign(pop1$trait1, 0)
assign(subset(pop1, ind == 46), 0)
有沒有辦法讓這項工作?非常感謝,並讓我知道更多的信息會有所幫助。
將所有彈出對象放入列表對象,然後使用lapply以避免「分配」問題。 – zx8754
一個技巧是創建一個命令字符串並使用'eval(parse(text = yourtext))'。 'a < - matrix(1:6,3,2)'然後'eval(parse(text = sprintf(「%s [%d,%d] < - 0」,「a」,1,1)) )'。在智能手機上輸入R碼很困難。 – chan1142