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

using paste function on variable in data.frame doesn't work

我正在处理一个让我大吃一惊的错误。 我从 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、重命名列、清除工作 space 等等。 我附上了一个包含用户 ID 的 .Rda 文件。任何人都可以理解它吗?

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

对于您的第一次调用,user_id 不作为变量存在,因此 return 是一个错误:

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 列)。要同时了解其工作原理,请在 df <- 行之后尝试 运行ning rm(user_id),然后尝试 运行ning paste0 调用。它应该 return 一个错误,因为你清除了向量。

要改用 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'")

取决于您想要的 return 类型