謝謝您嘗試提供幫助。我很樂意糾正所有的R違規行爲。R將值列表分配給對象列表
我不知道,我是用我的前面,如下崗位完全清楚,所以我希望澄清:
在R控制檯,我的電話「使用源(ETC)」到.R文件 .R文件中的代碼使用變量(例如'提取信息')ex1,ex2,ex3。這些可能包含字符串或從文本中提取的(一串)數字。
根據您的指導,我已將函數重命名爲「重置」(並且「重置」表示沒有其他事件)在範圍之內。我通過x和y兩個函數: #發送變量ex1,ex2,ex3以及位置,loc和解析,prs被重置爲0 重置(x < -c(loc,prs,ex1 ,EX2,EX3)中,y < -rep(C(0),長度(X)))在變量y多次#repeats 0作爲有對於x
reset<-function(x,y){
print(c("resetting ",x," with ", y))
if (length(x) == length(y)) {x <- y
print(paste(x,"=",y),sep="") #both x and y should now be equal (to y)
} else {
paste("list lengths differ: x=",length(x)," y=",length(y),sep="")
}
}
條目現在x和y都是0,但ex1,ex2和ex3仍然包含以前的值 我希望ex1,ex2和ex3在它們用於代碼的後續部分之前全部爲0,因此它們不會污染提取的數據以前的值如:
loc<-str_locate(data[i],"=")
prs<-str_locate(data[i],",")
#extract data from the end of loc to before the occurrence of prs
ex1<-str_sub(data[i],loc[2]+1,prs[1]-1)
#cleanup
#below is simplified for example;
#in reality I wish to send ex1:ex(n) to be reset with values val1:val(n)
期望的結果將是,早在RCONSOLE> EX1現在應該返回0
希望您能理解我的困境,並可能幫助。
說我的代碼使用一些變量來保存使用Stringr str_sub從字符串中提取的數據。這些變量是暫時的,因爲我使用這些值來構造其他字符串,然後它們應該被釋放以用於即將到來的測試中:即,如果(test == true){提取< -str_sub(字符串,開始,結束)}
對於以後的測試,我想提取== 0;很簡單,但我有一些這些,並希望一舉做到這一點。
我已經使用了for循環,但是如果有更簡單的方法,請確定這一點。
我嘗試使用功能:
#For variables loc, prs, ex1 and x2, set all values to 0
x<-assign(x<-c(loc, prs, ex1, ex2),y<-rep(c(0),length(x)))
#Function
assign <- function(x, y) {
if(length(x)==length(y)){
for (i in 1:length(x)){x[i]<-y[i]}
print(c("Assigned",x[i]))
return (x)
} else { print (c("list lengths differ: x=",length(x)," y=",length(y)))
}
}
的問題是,這種返回x爲0,但變量列表中保留其值。
我對r和SO都有一點小菜,所以雖然我多次從SO的豐富建議中受益,但這是我的第一個問題,所以請溫和。我已經搜索了這個問題,但現在幾個小時內還沒有找到我需要的。希望你能幫助。
已經有一個名爲「分配」功能。你可能會覺得它很有用,但無論如何你可能不想改變它。 – Rick