2016-12-19 7 views
0

文字列からリンクを抽出する関数を作成しました。データフレームを引数として渡してもうまく動作しますが、2番目の引数としてカラム名stringを渡したいときは動作しません。tidyr :: extractを使用しているときに第2引数で機能しない関数

一つの引数を持つワーキング機能:

library(tidyr)  
extractLinks <- function(x) { 

    # get all links in new column "url" 
    df <- tidyr::extract(x, string, "url", "(http.*)") 

    #get clean links and domains 
    df <- tidyr::extract(df, url, c("site", "domain"), "(http.*\\.(com|co.uk|net))", remove = F) 

    return(df) 
} 

extractLinks(df, string) 

今、私は2番目の引数を追加したいが、それはエラーを返します:

Error in names(l) <- enc2utf8(into) : 
    'names' attribute [1] must be the same length as the vector [0] 

これは、2つの引数を持つ私の関数である。

extractLinks <- function(x, y) { 

    # get all links in new column "url" 
    df <- tidyr::extract(x, y, "url", "(http.*)") 

    #get clean links and domains 
    df <- tidyr::extract(df, url, c("site", "domain"), "(http.*\\.(de|com|at|ch|ly|co.uk|net))", remove = F) 
    return(df) 
} 

extractLinks(df, string) 

複製の場合、データフレームの例:

string 
my text in front of the link http://www.domain.com 
my text in front of the link http://www.domain.com 
my text in front of the link http://www.domain.com 

どうしたらよいですか?

+0

だから、 'df'は' STRING'という列とdata.frameのですか?より明確にするために、データを[再現可能なフォーマット](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)に入れることが役立ちます。 'y'値の評価を遅らせたいので、あなたのfuntionに非標準評価を実行させたいように見えます。 [dplyr NSE vignette](https://cran.r-project.org/web/packages/dplyr/vignettes/nse.html)または[Advanced R - Non Standard Evaluation](http:// adv- r.had.co.nz/Computing-on-the-language.html)セクションを参照してください。通常、それは価値があるよりもトラブルです。 – MrFlick

答えて

0

あなたは、標準的な評価バリアントextract_()を使用して文字列に2番目の引数をオンにする必要があります。

# get all links in new column "url" 
    df <- tidyr::extract_(x, y, "url", "(http.*)") 

extractLinks(df, "string") 
関連する問題