2017-12-01 15 views
0

私はループして特定の変数をマージする必要があるデータフレームをたくさん持っています。Rの名前のリストを選択してください

私はのように、アレイ内のすべての私のリスト名を入れしようとしていた。

list_names <- c('list1','list2','list3') 

そして実行sapply

output <- sapply(list_names, function(x) rbind(main list, 
    select(as.name(x), col1, col2, col3, col4))) 

私はに実行・ファーストのエラーがある:

Error in UseMethod("select_") : 
    no applicable method for 'select_' applied to an object of class "character" 

select文は、私が渡しているのが好きではないと思います。x変数名ではありません。 xが変数名であると言うことができる方法はありますか?私はas.name(x)と思った。

おかげ

答えて

1

あなたは、列名によってデータを取得する、getを試すことができます。

再現例:

library(dplyr) 

list_names = c("mtcars", "mtcars") 

lapply(list_names, function(x) rbind(mtcars[1:3], select(get(x), mpg, cyl, disp))) 

を別の方法から(symに各list_namesを変換することですrlangselect

を呼び出すときにそれを評価してください
library(rlang) 

lapply(list_names, function(x) rbind(mtcars[1:3], select(eval_tidy(sym(x)), mpg, cyl, disp))) 

基本R換算:

lapply(list_names, function(x) rbind(mtcars[1:3], select(eval(as.name(x)), mpg, cyl, disp))) 

OPの例:

output <- lapply(list_names, function(x) rbind(main_list, 
    select(get(x), col1, col2, col3, col4))) 

または:

output <- lapply(list_names, function(x) rbind(main_list, 
    select(eval(as.name(x)), col1, col2, col3, col4))) 
関連する問題