我希望构建一个如下所述的正文字符串。
问题:
假设从列表中获取键值对并且键值对为 3 个或更多,我如何获得相同的结果?
注意:
有些字符只设置一次,例如方括号,并且冒号在每个键值对中使用一次。
内容和键值对只是描述结构,最终的解决方案会有其他值,例如 epic = 瑞典,货币 = 美元等。
解决问题的当前想法:
分 3 个步骤处理数据。
1( 每个键和值都需要转义引号。
2(每个键值对都应该有冒号作为分隔符。
3(完整的字符串应用大括号括起来。
4( 最后一个键值对不应以逗号结尾。
# Characters for building string.
curly_bracket_left <- "{"
curly_bracket_right <- "}"
colon <- ": "
comma <- ", "
escaped_quotation <- """
# Key-value-pairs data.
key_title_1 <- "epic"
value_title_1 <- "sweden"
key_title_2 <- "currency"
value_title_2 <- "SEK"
# Build string.
string <- paste0(
curly_bracket_left,
escaped_quotation,
key_title_1,
escaped_quotation,
colon,
escaped_quotation,
value_title_1,
escaped_quotation,
comma,
escaped_quotation,
key_title_2,
escaped_quotation,
colon,
escaped_quotation,
value_title_2,
escaped_quotation
curly_bracket_right
)
print(string)
结果(如预期(:
[1] "{"epic": "sweden", "currency": "SEK"}"
拥有 3 个值对时的预期结果:
[1] "{"epic": "sweden", "currency": "SEK", "resolution": "minutes_5"}"
您可以在paste0
中使用 collapse
参数,如下所示:
keys <- state.abb
vals <- state.name
# Characters for building string.
curly_bracket_left <- "{"
curly_bracket_right <- "}"
colon <- ": "
comma <- ", "
escaped_quotation <- """
paste0(
curly_bracket_left,
paste0(escaped_quotation,
keys,
escaped_quotation,
colon,
escaped_quotation,
vals,
escaped_quotation,
collapse = comma
),
curly_bracket_right
)
#output:
# [1] "{"AL": "Alabama", "AK": "Alaska", "AZ": "Arizona", "AR": "Arkansas", "CA": "California", "CO": "Colorado", "CT": "Connecticut", "DE": "Delaware", "FL": "Florida", "GA": "Georgia", "HI": "Hawaii", "ID": "Idaho", "IL": "Illinois", "IN": "Indiana", "IA": "Iowa", "KS": "Kansas", "KY": "Kentucky", "LA": "Louisiana", "ME": "Maine", "MD": "Maryland", "MA": "Massachusetts", "MI": "Michigan", "MN": "Minnesota", "MS": "Mississippi", "MO": "Missouri", "MT": "Montana", "NE": "Nebraska", "NV": "Nevada", "NH": "New Hampshire", "NJ": "New Jersey", "NM": "New Mexico", "NY": "New York", "NC": "North Carolina", "ND": "North Dakota", "OH": "Ohio", "OK": "Oklahoma", "OR": "Oregon", "PA": "Pennsylvania", "RI": "Rhode Island", "SC": "South Carolina", "SD": "South Dakota", "TN": "Tennessee", "TX": "Texas", "UT": "Utah", "VT": "Vermont", "VA": "Virginia", "WA": "Washington", "WV": "West Virginia", "WI": "Wisconsin", "WY": "Wyoming"}"