拆分列名称和值

时间:2016-03-15 23:41:45

标签: r

我有以下形式的参数名称 - 值对:

[1] "action=purchase"              "itemId=EST-21"

如何使用参数名称作为列名称并将值作为列值来构造输出?例如,我希望将上述值输出为:

[Column names] [1]action    itemId
[Column values][2]purchase  EST-21

2 个答案:

答案 0 :(得分:5)

假设您将参数值对存储为向量中的字符串:

(dat <- c("action=purchase", "itemId=EST-21"))
# [1] "action=purchase" "itemId=EST-21"

然后您可以使用strsplit分割等号:

(spl <- strsplit(dat, "="))
# [[1]]
# [1] "action"   "purchase"
# 
# [[2]]
# [1] "itemId" "EST-21"

然后,您可以使用以下内容构造具有适当值和名称的向量:

setNames(sapply(spl, "[", 2), sapply(spl, "[", 1))
#     action     itemId 
# "purchase"   "EST-21"

答案 1 :(得分:2)

要转换=的lhs上的子字符串,我们可以直接使用read.table/read.csv,将sep指定为=header=TRUE

read.table(text=dat, sep="=", header=TRUE, 
           stringsAsFactors=FALSE)
#  action purchase
#1 itemId   EST-21

注意:&#39; dat&#39;取自@ josliber的帖子。