从dataframe中按字符向量子集我的R列表

时间:2018-03-28 13:51:44

标签: r list object dataframe subset

我有一个r对象,' d'这是一个清单。我想要一个引用该列表子集的数据框作为函数的变量,' myfunction'。使用rslurm将使用不同的d子集调用此函数数千次。

示例:d [[' 1']] [[3]]引用列表中的数据矩阵。

myfunction(d[['1']][[3]]) 

工作正常,但我希望能够从数据框中调用这些子集。

我希望能够拥有一个数据帧,' ds'包含我的所有子集引用。

>ds
              d
1 d[['1']][[3]]
2 d[['1']][[4]]

>myfunction(get(ds[1,1]))
Error in get(ds[1, 1]) : object 'd[['1']][[3]]' not found

是否有像' get'这会让我调用我的对象的一个​​子集,d? 或者我可以放入的东西' myfunction'这将澄清该字符串引用d?

的子集

stack_overflow 'get'

2 个答案:

答案 0 :(得分:0)

列表

my_list <- c('peanut', 'butter', 'is', 'amazing')

数据框,包含子集引用

my_dataframe <- data.frame(keys=c("my_list[[1]]", "my_list[[2]]", "my_list[[3]]", "my_list[[4]]"), stringsAsFactors=F)

enter image description here

函数,它根据传递的值从列表中提取值:

my_function <- function(key, my_list) {
    from_list <- eval(parse(text=key))
    print(from_list)
}

通过传入数据框行选项和列表来获取列表中的值

my_function(my_dataframe[1,1], my_list)

enter image description here

答案 1 :(得分:0)

我解决了这个问题,方法是更改​​myfunction以获取两个变量c和w,并在更新函数的第一行中使用括号表示法定义d。我的ds现在有两个变量c和w,变量c定义为as.character,它可以工作!

myfunction(c,w) {
d<-d[[c]][[w]]
....rest of function}

>ds
 c w
1 1 3
2 1 4

>test <- myfunction(ds[1,1],ds[1,2])