0
考慮下面的例子as.formula不喜歡等價 '='(沒有找到對象)
df1 <- data.frame(a=c(1,2,3),b=c(2,4,6));
transform(df1,c=a+b)
a b c
1 1 2 3
2 2 4 6
3 3 6 9
到目前爲止,一切都很好。現在我想動態代碼這一點,使用as.formula:
transform(df1,as.formula("c=a+b"))
然而,R表示
Error in eval(expr, envir, enclos) : object 'b' not found
不使用不會出現此錯誤「〜」作爲左手和右手邊的隔板。我能否以某種方式推遲公式的評估?在作業中是否可以使用as.formula?我嘗試過與'與'擺弄,但無濟於事。
我想你想讓他們成爲'表達'而不是公式。然而,看起來你最終會在'eval(parse(text =「whatever」))'上做一些變化,這會導致可怕的,可怕的代碼,很難找到錯誤。如果可能的話,嘗試做一些不太聰明的事情。 – 2012-02-01 11:30:09
將字符串分成等號會更好。在左邊,你可以像'df1 [[「c」]] < - something'。從''a + b「'到在'df1'中評估的意思是''eval(parse(text =」a + b「),df1)'或者同樣醜陋的東西。我建議你告訴我們更多關於你想要達到的目標,所以我們可以幫助你考慮一個替代方案。 – 2012-02-01 11:40:00
在我真正的問題中,它也不是自動執行它的關鍵。我只有大約50列,名稱分爲「X [XOY] [ABC] _ [0-9] [0-9]」,例如「XXA_05」。現在,我想對相同的「X [XOY]」類型和相同數字的所有列進行平均,例如「XXA_00」和「XXB_00」,並將其保存到這些列的第一列。 這當然也可以通過刷新右列來在列級上完成。我只是偶然發現了配方問題,並想知道它是否有可能將其作爲配方實施。 – Johannes 2012-02-01 12:55:26