R:如果名称是由函数创建的,如何将 DataFrame 的名称传递给函数
R: How to pass a name of DataFrame to a function, if a name is created by function
我有一个例子,其中一个数据帧是在gWidgets的gdfedit函数中创建的,但名称不固定(根据另一个向量而变化)。我想将此数据框传递给另一个函数,但我不知道如何。
我的代码有点复杂,但这个例子总结了我的问题:
example <- function(df1, df2){
df1$v3 <- df2$v1
}
x <- "01"
df1 <- data.frame(v1=c(1,2,3), v2=c(6,7,8))
gdfedit(items= df1, name=paste("df", x, sep = '' ), container = gwindow() , expand=TRUE)
example(df1, paste("df", x, sep = '' )) #this obviously doesn't work.
我可以使用 for() 和 if() 循环遍历 'x' 的向量,但我想要更优雅的解决方案。有任何想法吗?
您需要在将数据帧传递给您的函数时调用 get
。
library(gWidgetsRGtk2)
library(RGtk2Extras)
#your defined function
example <- function(x1, x2, x1_col, x2_col){
x1[, x1_col] <- x2[, x2_col]
return(x1)
}
#sample data
x <- "01"
df1 <- data.frame(v1 = c(1,2,3), v2 = c(6,7,8))
#edit dataframe and save it as a new dataframe
gdfedit(items = df1, name = paste0("df", x), container = gwindow(), expand = T)
#call function
example(df1, get(paste0("df", x)), "new_column", "v1")
这给出(如果我在 df01
中保存 df1
'as is')
v1 v2 new_column
1 1 6 1
2 2 7 2
3 3 8 3
(注意:我稍微修改了你的函数定义)
我有一个例子,其中一个数据帧是在gWidgets的gdfedit函数中创建的,但名称不固定(根据另一个向量而变化)。我想将此数据框传递给另一个函数,但我不知道如何。
我的代码有点复杂,但这个例子总结了我的问题:
example <- function(df1, df2){
df1$v3 <- df2$v1
}
x <- "01"
df1 <- data.frame(v1=c(1,2,3), v2=c(6,7,8))
gdfedit(items= df1, name=paste("df", x, sep = '' ), container = gwindow() , expand=TRUE)
example(df1, paste("df", x, sep = '' )) #this obviously doesn't work.
我可以使用 for() 和 if() 循环遍历 'x' 的向量,但我想要更优雅的解决方案。有任何想法吗?
您需要在将数据帧传递给您的函数时调用 get
。
library(gWidgetsRGtk2)
library(RGtk2Extras)
#your defined function
example <- function(x1, x2, x1_col, x2_col){
x1[, x1_col] <- x2[, x2_col]
return(x1)
}
#sample data
x <- "01"
df1 <- data.frame(v1 = c(1,2,3), v2 = c(6,7,8))
#edit dataframe and save it as a new dataframe
gdfedit(items = df1, name = paste0("df", x), container = gwindow(), expand = T)
#call function
example(df1, get(paste0("df", x)), "new_column", "v1")
这给出(如果我在 df01
中保存 df1
'as is')
v1 v2 new_column
1 1 6 1
2 2 7 2
3 3 8 3
(注意:我稍微修改了你的函数定义)