我知道eval()可能导致难以维护的代码,但我再次运行到我不知道还能使用什么的情况。
以下是从a
获取列data
并创建新数据框的手动方式。
data <- data.frame(a=1:5, b=6:10)
new.data <- data.frame( a = data[ , "a"] )
这适用于一列。但是,在我的实际应用程序中,我必须将多个列提取到多个新数据框中,并且我必须按名称引用列(因此标题,将列名称(即字符串)转换为命令) 。如果不诉诸eval(parse = text),我怎么能这样做?
答案 0 :(得分:1)
请记住,数据框存储为列表,列表可以是带有字符串向量的子集(如果列表已命名,但列名称是列表元素的名称)。所以你可以这样做:
> mydf <- data.frame( a=1:5, b=5:1, c=11:15, d=21:25 )
>
> mycols <- c('a','d')
>
> mydf[ mycols ]
a d
1 1 21
2 2 22
3 3 23
4 4 24
5 5 25
> str(.Last.value)
'data.frame': 5 obs. of 2 variables:
$ a: int 1 2 3 4 5
$ d: int 21 22 23 24 25