我认为 OP 想知道如何通过在系统调用中插入变量来使用 awk 或从 R 中剪切。
一种方法是使用sprintf
构建将 feed 的命令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
未矢量化,因此如果您有一列包含多个 url,则不能直接应用相同的方法。
所以你需要先“矢量化”这个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"