从全局环境中获取对象并将其切割为类似数据帧[重复]

问题描述 投票:2回答:2

这个问题在这里已有答案:

我预见这个问题必须由经验丰富的R用户进行大量编辑,因为我不确定使用的正确术语。

这是一个可重现的数据帧。是否可以从全局环境中获取对象并将其切割为普通数据帧?

df1 <- data.frame(fruit=c("apple", "Orange", "Pear"), location = c("Japan", "China", "Nigeria"), price = c(32,53,12))

df1
   fruit location price
1  apple    Japan    32
2 Orange    China    53
3   Pear  Nigeria    12

获取全局环境中的对象列表

allobj <- ls()
allobj[1]
"df1"

我理解通过使用noquote函数,它返回对象的名称,在本例中是df1 - 我的数据帧的名称。

如何在基本R切片中将此输出视为命名数据帧?例如,

(noquote(allobj[1]))[,1] #subset out only the 'fruit' column.

以上返回错误:

unclass(x)中的错误[...]:维度数不正确

这有解决方法吗?

r
2个回答
3
投票

您可以使用get然后将第一列子集化

get(obj[1])[1]

#   fruit
#1  apple
#2 Orange
#3   Pear

1
投票

我已经尝试过相同的小编辑,请在下面找到它,让我知道它是否适合

df1 <- data.frame(fruit=c("apple", "Orange", "Pear"), location = c("Japan", "China", "Nigeria"), price = c(32,53,12))

objs = ls()

get(objs[1])[,1] # for values as a vector
[1] apple  Orange Pear  
Levels: apple Orange Pear

get(objs[1])[1] #for column subset
   fruit
1  apple
2 Orange
3   Pear
© www.soinside.com 2019 - 2024. All rights reserved.