这个问题在这里已有答案:
我预见这个问题必须由经验丰富的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)中的错误[...]:维度数不正确
这有解决方法吗?
您可以使用get
然后将第一列子集化
get(obj[1])[1]
# fruit
#1 apple
#2 Orange
#3 Pear
我已经尝试过相同的小编辑,请在下面找到它,让我知道它是否适合
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