[英]How do I get a function to retain values I assign? (R)
這是我早些時候發布的有關如何為名稱向量分配值的問題的跟進: R:如何簡潔地為向量參數組件分配名稱?
我想為名稱向量分配值,並且需要在下面的代碼中使用形式為function2的多個不同函數來執行此操作。 我不想將代碼插入每個函數中,而是要編寫下面形式為function1的子例程,然后在每個函數中調用它。 不幸的是,當我調用它時,名稱分配保留在function1中,並且無法在“ return(adam + ...)”部分中使用。 我懷疑這與我為assign函數指定環境有關,但我不知道如何解決(我不想全局分配名稱)。 有人可以幫忙嗎?
我要使用的粗略代碼如下:
function1 <- function(vector, names){
for (i in 1:length(vector){
assign(names[i], vector[,i], envir = environment())
}
}
function2 <- function(vector){
names1 <- c("adam", "becky", "charlie",...)
function1(vector,names1)
return( adam + becky^2 - 2*charlie*david +...)
}
您不想編寫用於名稱分配的函數,更不用說包含循環的函數了。
請改用命名向量。 例如:
vec1 <- c("this","that","the other")
vec2 <- c(5,7,9)
names(vec2) <- vec1
然后這有效
vec2['that'] <- vec2['that'] + 1
print(vec2)
this that the other
5 8 9
您可以嘗試:
function1 <- function(vector, names, envir){
for (i in 1:length(vector)){
assign(names[i], vector[i], envir = envir)
}
}
function2 <- function(vector){
names1 <- c("adam", "becky", "charlie", "david")
function1(vector,names1, envir=environment())
return(adam + becky^2 - 2*charlie*david)
}
v1 <- 1:4
function2(v1)
#[1] -19
adam
#Error: object 'adam' not found
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.