在data.frame中对变量使用粘贴函数不起作用

时间:2016-04-15 17:33:18

标签: r soundcloud

我正在努力解决一个让我大吃一惊的错误。 我从soundcloud中分离了一些数据的user_id,并删除了重复项。 现在我正在尝试使用paste0函数,因此我可以获得有关单独用户的信息。

step3 <- paste0("'http://api.soundcloud.com/users/", user_id, "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")

它带回消息

Error: object 'user_id' not found.

现在我尝试了各种不同的方法来解决粘贴功能,但是当我尝试按照以下方式制作“手工制作”的数据框时:

participant <- c(1:4)
user_id <- c(199647167, 199647179, 146469660, 128223886)
df <- data.frame(participant, user_id)

现在它整齐地回归了:

[1] "'http://api.soundcloud.com/users/199647167?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'"

[2] "'http://api.soundcloud.com/users/199647179?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'"

[3] "'http://api.soundcloud.com/users/146469660?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'"

[4] "'http://api.soundcloud.com/users/128223886?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'”

正是我想要的!但是在“真正的”数据框架上,它不起作用。 我尝试过各种各样的事情,比如将数据复制到新的DF,重命名列,清理工作空间等等。 我附上了一个带有用户ID的.Rda文件。任何人都可以理解它吗?

http://s000.tinyupload.com/?file_id=19951112717935170742

1 个答案:

答案 0 :(得分:1)

对于您的第一个电话,user_id不作为变量存在,因此会返回错误:

step3 <- paste0("'http://api.soundcloud.com/users/", user_id, "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")
Error: object 'user_id' not found.

现在以下内容:

participant <- c(1:4) #participant exits
user_id <- c(199647167, 199647179, 146469660, 128223886) #participant exits, user_id exists
df <- data.frame(participant, user_id) #participant exits, user_id exists, df exists

在第2行中,您定义了一个向量user_id,它现在位于命名空间中。将其分配给data.frame不会将其删除

然后再次运行代码:

step3 <- paste0("'http://api.soundcloud.com/users/", user_id, "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")

它从您的环境中提取user_id变量(向量,而不是data.frame列)。要了解其原因,请尝试在rm(user_id)行之后运行df <-,然后尝试运行paste0调用。它应该返回一个错误,因为你清除了向量。

要使用data.frame,您必须使用子集。语法如下:

paste0("'http://api.soundcloud.com/users/", df$user_id, "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")
#or
paste0("'http://api.soundcloud.com/users/", df[,"user_id"], "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")
#or
paste0("'http://api.soundcloud.com/users/", df[["user_id"]], "?client_id=0ab2657a7e5b63b6dbc778e13c834e3d'")

取决于您想要的返回类型