【发布时间】:2018-10-09 21:30:13
【问题描述】:
从多个字符串构建数据框名称时,如何在函数中引用我的数据框?
a <- c(1:6)
b <- c("05/12/2012 05:00","05/12/2012 06:00","06/12/2012 05:00",
"06/12/2012 06:00", "07/12/2012 09:00","07/12/2012 07:00")
c <-c("0","0","0","1","1","1")
d <-c("12", "12", "13", "15", "16", "17")
dataframenumber4 <- data.frame(a,b,c,d,stringsAsFactors = FALSE)
我想从我的数据框中选择一个值。
dataframenumber4[1,4]
[1] 12
但我也想构建一个函数,因为我有多个要从中选择的数据框:
selectvalue <- function(dataframe, number){
paste0(dataframe,number)[1,4]
}
selectvalue("dataframe", "number4")
[1] NA NA NA
我认为这是不对的,因为 R 没有将我的小字符串识别为对象名称。所以我试图修复它:
selectvalue <- function(dataframe, number){
eval(paste0(dataframe,number))[1,4]
}
selectvalue("dataframe", "number4")
返回“评估错误(paste0(dataframe,number,quote = FALSE))[1,4]:维数不正确”
我在我的函数中尝试了多种方法,但我无法让 R 识别出我正在尝试将我的数据框提供给它。我怎样才能解决这个问题?
【问题讨论】:
-
对 R 更友好的方式是将这些数据帧放在一个列表中(
dfs <- list(dataframe1, dataframe2),然后使用dfs[[i]]访问。 -
@Aaron 已正确指出。创建数据框列表并使用
[[运算符访问它们总是更好。
标签: r function object dataframe eval