2013-07-02 25 views
0

我有它的第二列在他們的鏈接CSV文件,並在每個鏈接的3列,我想插入自己的域名。我知道有一個AWK命令做到這一點:使用AWK找到從一個CSV文件URL域名,並把它們作爲一個新的領域

echo http://news.blogs.cnn.com/2013/04/15/explosions-near-finish-of-boston-marathon/?hpt=hp_t1 | awk -F/ '{print $3}' 

而且我想獲得在每個URL的第三列的結果。我試着R中這樣做,但沒有工作,有沒有其他的方法可以讓我做到這一點?例如。通過終端?

編輯:或者,我怎樣才能插入變量進入系統()調用?所以,像,變量a我的網址,我想打電話:

system("echo 'a' | awk -F/ '{print $3}'") 
+0

對於R,見[這個問題](http://stackoverflow.com/questions/17285439/does-r-have-any-包換解析出最部件對的一-URL/17286485#17286485)。 – Thomas

回答

0

我覺得OP想知道如何用awk或由系統調用中插入變量來自R切割。要做到這一點

一種方法是使用sprintf打造的命令,將飼料system

a <- "echo http://news.blogs.cnn.com/2013/04/15/explosions-near-finish-of-boston-marathon/?hpt=hp_t1" 

### with Awk 
cmd <- sprintf("echo %s | awk -F/ '{print $3}'", a) 
system(cmd, intern = TRUE) 
## [1] "news.blogs.cnn.com" 


### Using cut 
cmd2 <- sprintf("echo %s | cut -d/ -f3", a) 
system(cmd2, intern = TRUE) 
## [1] "news.blogs.cnn.com" 

默認system沒有矢量,所以如果你有一個以上的網址列,你不能直接採用同樣的方法。

所以,你需要 「矢量化」 的system功能首先

system_vect <- Vectorize(system, vectorize.args = "command", USE.NAMES = FALSE) 

b <- "http://www.r-bloggers.com/some-common-approaches-for-analyzing-likert-scales-and-other-categorical-data/" 

cmd3 <- sprintf("echo %s | awk -F/ '{print $3}'", c(a, b)) 
system_vect(cmd3, intern = TRUE) 
## [1] "news.blogs.cnn.com" "www.r-bloggers.com" 


system(cmd3, intern = TRUE) 
## [1] "news.blogs.cnn.com" 
相關問題