在 R 中的 dplyr mutate 语句中使用 `get` 时出现错误

问题描述 投票:0回答:1

我的 R 环境中包含一些对象。

tmp <- list(1,2,4)
dafa <- data.frame(thing="Yes", 
            value=4)

列表和数据框在使用时都显示为

list

typeof(get("tmp"))  # list
typeof(get("dafa")) # list

我想获取环境中所有对象的数据帧,并使用

inherits(get(name), "data.frame")

记录其中某些对象是否是数据帧
library(tidyverse)
# get a list of all the objects in the environment and 
# store in a table
data_items <- map_dfr(ls(), \(itm){
    data.frame(name=itm, 
               type=typeof(get(itm)), 
               size=object.size(get(itm)))})

# adjust each row to specify if object is a dataframe
data_items %>% rowwise() %>%
mutate(type = ifelse(inherits(get(name), "data.frame"),
                   "data.frame",
                   type))

然而,这抱怨:

get(name) 中的错误:第一个参数的长度 > 1

即使是

rowwise
,你知道我哪里出错了吗?

r dplyr typeof
1个回答
2
投票
data.frame(name = ls(),
           class = sapply(mget(ls()), class))
#      name      class
# dafa dafa data.frame
# tmp   tmp       list
© www.soinside.com 2019 - 2024. All rights reserved.