使用来自csv文件的数据作为R中的字符向量

时间:2017-08-16 10:40:35

标签: r vector

我是R的新手,我正在尝试使用SocialMediaMineR包来解决我存储在csv数据集中的缩短网址。这是通过命令get_url完成的,该命令需要一个字符向量作为要解析的URL。

我们说我想解决三个URL。如果我手动创建一个包含这三个字符的向量并启动命令,它就可以工作:

    library(SocialMediaMineR)
    url<- c("http://buff.ly/1bH9XaL", "http://buff.ly/1I4REcx", "http://buff.ly/1kMqoFs")
    get_url(url, return.df = T)
...             originalURL
1 http://buff.ly/1bH9XaL
2 http://buff.ly/1I4REcx
3 http://buff.ly/1kMqoFs
                                                                                                                                                                                         resolvedURL
1                                     https://www.storiedmind.com/relationship/11-relationship-traps-of-depression/?utm_source=buffer&utm_campaign=Buffer&utm_content=buffer8151c&utm_medium=twitter
2 http://inkygirl.com/inkygirl-main/2015/8/15/am-going-to-try-hard-not-to-be-like-these-writers-while-im-o.html?utm_content=bufferc6643&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
3         http://the7gracesofmarketing.com/2014/07/10-business-systems-to-help-your-one-person-enterprise-grow/?utm_content=buffer83b26&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

但是,我希望直接从我的csv文件中获取URL列表。我尝试使用csv文件的以下代码,该文件包含与以前完全相同的三个URL:

library(SocialMediaMineR)
url_list = read.csv("~/Desktop/url2.csv", header = F)
as.character(url_list)
get_url(url_list)

但是,我一直收到以下错误:

Error : length(url) == 1 is not TRUE

为清楚起见,这里是从csv文件中读取的数据结构:

> url_list<-read.csv("~/Desktop/url2.csv", header = F)
> dput(url_list)
structure(list(V1 = structure(1:3, .Label = c("http://buff.ly/1bH9XaL", 
"http://buff.ly/1I4REcx", "http://buff.ly/1kMqoFs"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-3L))

为什么会发生这种情况,我该如何解决?任何帮助都将非常感激!

1 个答案:

答案 0 :(得分:0)

首先,您没有使用参数stringsAsFactors = FALSE读取数据,因此您有一列类factor的对象。你必须这样做

url_list$V1 <- as.character(url_list$V1)

在此之后,以下似乎有效。

get_url(url_list$V1)

注意:正如我上面所述,正确读取数据的方法是

url_list = read.csv("~/Desktop/url2.csv", header = F, stringsAsFactors = FALSE)