【发布时间】:2018-10-14 01:41:03
【问题描述】:
我有一个包含 to 列的大数据框,一个是名为“code”的 ID 代码,一个是两个火车站的名称,由名为“name”的斜线分隔
我想搜索与电台名称相关的所有代码(并且能够一次查找多个电台),因此它会给我一个包含每个电台的多个代码的向量列表。
我使用 lapply 来获取每个站点的行,但现在我无法在与行号关联的“代码”列中查找值。
SearchFor <- c("Chicago", "New York", "Atlanta")
lapply(c(SearchFor,grep,x=datastations$name)
我有以下清单:
$`Chicago`
[1] 29 64 135 160 164 167 176 186 225 247 248
$New York
[1] 51 53 109 111 112 164
$Atlanta
[1] 4 78 168 237 291
基本上,我想将这些数字中的每一个更改为这些行中“代码”列的值。
这是我使用 dput 后的数据表“数据站”:
structure(list(code = c(6000L, 6001L, 6002L, 6003L, 6004L, 6005L,
6006L, 6007L, 6008L, 6009L, 6010L, 6011L, 6012L, 6013L, 6014L,
6015L, 6016L, 6017L, 6018L, 6019L, 6020L, 6021L, 6022L, 6023L,
6024L, 6025L, 6026L, 6027L, 6028L, 6029L, 6030L, 6031L, 6032L,
6033L, 6034L, 6035L, 6036L, 6037L, 6038L, 6039L, 6040L, 6041L,
6042L, 6043L, 6044L, 6045L, 6046L, 6047L, 6048L, 6049L, 5000L,
5001L, 5002L, 5003L, 5004L, 5005L, 5006L, 5007L, 5008L, 6050L,
6051L, 6052L, 6053L, 6054L, 6055L, 6056L, 6057L, 6058L, 6059L,
6060L, 6061L, 6062L, 6063L, 6064L, 6065L, 6066L, 6067L, 6068L,
6069L, 6070L, 6071L, 6072L, 6073L, 6074L, 6075L, 6076L, 6077L,
6078L, 6079L, 6080L, 6081L, 6082L, 6083L, 6084L, 6085L, 6086L,
6087L, 6088L, 6089L, 6090L, 6091L, 5009L, 5010L, 5011L, 5012L,
6092L, 6093L, 6094L, 6095L, 6096L, 6097L), name = c("Atlanta / New York",
"Atlanta / Chicago", "Atlanta / Miami", "Atlanta / Los Angeles",
"Atlanta / Toronto", "Atlanta / Washington", "Atlanta / Cleveland",
"Atlanta / Raleigh", "Atlanta / Newark", "Atlanta / Ottawa",
"Atlanta / Detroit", "Atlanta / Albany", "Atlanta / Hartford",
"Atlanta / Providence", "New York / Chicago", "New York / Miami",
"New York / Los Angeles", "New York / Toronto", "New York / Washington",
"New York / Cleveland", "New York / Raleigh", "New York / Newark",
"New York / Ottawa", "New York / Detroit", "New York / Albany",
"New York / Hartford", "New York / Providence", "Chicago / Miami",
"Chicago / Los Angeles", "Chicago / Toronto", "Chicago / Washington",
"Chicago / Cleveland", "Chicago / Raleigh", "Chicago / Newark",
"Chicago / Ottawa", "Chicago / Detroit", "Chicago / Albany",
"Chicago / Hartford", "Chicago / Providence", "Miami / Los Angeles",
"Miami / Toronto", "Miami / Washington", "Miami / Cleveland",
"Miami / Raleigh", "Miami / Newark", "Miami / Ottawa", "Miami / Detroit",
"Miami / Albany", "Miami / Hartford", "Miami / Providence", "Toronto / Washington",
"Toronto / Cleveland", "Toronto / Raleigh", "Toronto / Newark",
"Toronto / Ottawa", "Toronto / Detroit", "Toronto / Albany",
"Toronto / Hartford", "Toronto / Providence", "Los Angeles / Toronto",
"Los Angeles / Washington", "Los Angeles / Cleveland", "Los Angeles / Raleigh",
"Los Angeles / Newark", "Los Angeles / Ottawa", "Los Angeles / Detroit",
"Los Angeles / Albany", "Los Angeles / Hartford", "Los Angeles / Providence",
"Washington / Washington", "Washington / Cleveland", "Washington / Raleigh",
"Washington / Newark", "Washington / Ottawa", "Washington / Detroit",
"Washington / Hartford", "Washington / Providence", "Raleigh / Newark",
"Raleigh / Ottawa", "Raleigh / Detroit", "Raleigh / Albany",
"Raleigh / Hartford", "Raleigh / Providence", "Cleveland / Raleigh",
"Cleveland / Newark", "Cleveland / Ottawa", "Cleveland / Detroit",
"Cleveland / Albany", "Cleveland / Hartford", "Cleveland / Providence",
"New York / Newark", "New York / Ottawa", "New York / Detroit",
"New York / Albany", "New York / Hartford", "New York / Providence",
"Newark / Ottawa", "Newark / Detroit", "Newark / Albany", "Newark / Hartford",
"Newark / Providence", "Ottawa / Detroit", "Ottawa / Albany",
"Ottawa / Hartford", "Ottawa / Providence", "Detroit / Albany",
"Detroit / Hartford", "Detroit / Providence", "Albany / Hartford",
"Albany / Providence", "Hartford / Providence")), class = "data.frame", row.names = c(NA,
-111L))
我通过使用此代码读取 .csv 文件获得了这个数据库
read.csv(file, colClasses =
c(rep("integer",1),rep("character",1),rep("NULL",2)))
我想申请类似的东西:
List[1] <- datastations$code[List[[1]]]
但是在列表的每个向量上,不管有多少(所以基本上没有循环)
【问题讨论】:
-
lapply(SearchFor,grep,x=datastations$name, value = TRUE) -
这给了我“名称”列中的值,而我需要“代码”列中的值
-
您能否向我们提供代码以生成具有相同内容的相同格式的数据框,或者使用
dput来打包您的数据以便重现?当我们可以将您的数据以及您尝试过的内容剪切并粘贴到我们自己的 R 会话中时,帮助解决问题会容易得多。谢谢:) -
我编辑了我的帖子以添加运行 dput 后得到的内容。如果我知道怎么做,我也可以只提供 .csv
-
请添加一个示例,说明您的预期结果。根据您对@mysteRious 的回答,这并不完全清楚。