通常如何在R中引用最后生成的(<;-)对象(在我的例子中是data.frame)?

通常如何在R中引用最后生成的(<;-)对象(在我的例子中是data.frame)?,r,R,我喜欢编写一个循环或函数来计算最后生成的data.frame的名称(!)。根据上次使用的数据帧的名称,我希望执行某些操作 df_head <- data.frame("age" = c(19, 21), sex = c("m", "f")) ifelse( str_detect(deparse(substitute(df_head)), "head", negate = FALSE), head(df_head), ta

我喜欢编写一个循环或函数来计算最后生成的data.frame的名称(!)。根据上次使用的数据帧的名称,我希望执行某些操作

   df_head <- data.frame("age" = c(19, 21), 
               sex = c("m", "f"))


    ifelse(  str_detect(deparse(substitute(df_head)), "head", negate = FALSE),
         head(df_head), tail(df_head)
         ) 

    df_tail <- data.frame("age" = c(17, 04), 
                          sex = c("m", "f"))


    ifelse(  str_detect(deparse(substitute(df_tail)), "head", negate = FALSE),
             head(df_tail), tail(df_tail)
    )

df_headR不会记录以前的命令,这些命令足够详细,可以执行您想要的操作。有些前端需要R做,但不是全部

如果您正在使用其中一个前端,则以下代码可能会起作用:

lastAssigned <- function(match = "<- *data.frame",
                         remove = " *<-.*") {
  f <- tempfile()
  savehistory(f)
  history <- readLines(f)
  unlink(f)
  match <- grep(match, history, value = TRUE)
  sub(remove, "", match[length(match)])
}

但是,这取决于您始终使用特定的代码模式执行任务,因此它不是很通用。

欢迎使用StackOverflow。你可能想了解一下。你的问题现在相当抽象。如果您向我们展示您的尝试、您的数据以及输出应该是什么样子,我们可以更好地帮助您。显然,您需要某种循环结构。您是否尝试过循环或*应用函数?亲爱的gersht,谢谢。我的问题不是循环,但我把它做得更具体了。您可以使用
ls()
,但不确定如何按创建时间排序。或者只要使用
get/mget
,假设您知道最后生成的数据集的名称。你的下一句话似乎暗示了这一点。亲爱的NelsonGon ls()似乎很有希望,但不起作用。我试过这样的代码:
df#u head你试过系统变量
.Last.value
?我试过你的代码如下:
lastsigned()#works#使用ifelse(str#u deparse(substitute(lastsigned()),“head”,negate=FALSE),head(lastsigned()),tail(lastsigned())
这不会给出df####头的头部,但它给了字母dfu头。你在哪个前端用的?我用的是RStudio。它没有给出变量的内容:函数只给出了它的名称。您可以使用
get()
使用变量名检索变量。简短的后续问题是,最后分配的函数是否能够重写其自身?因为一个有趣的原因,我并没有从中得到“df_head”,即使我上一次用RStudio在R中分配了新函数。谢谢你的帮助!如果你有不同的问题,你应该把它作为不同的问题发布。欢迎您将我的职能作为您问题的一部分,并且还应描述您所做的事情、您得到的东西以及您期望得到的东西。
lastAssigned <- function(match = "<- *data.frame",
                         remove = " *<-.*") {
  f <- tempfile()
  savehistory(f)
  history <- readLines(f)
  unlink(f)
  match <- grep(match, history, value = TRUE)
  sub(remove, "", match[length(match)])
}
> lastAssigned()
[1] "df_head"