【问题标题】:Combining vector elements with paste将矢量元素与粘贴相结合
【发布时间】:2021-07-27 14:06:34
【问题描述】:

我有两个向量:

old <- c("a", "b", "c")
new <- c("1", "2", "3")

我想将它们组合起来,使得新向量var_names的元素为'a' = '1'、'b' = '2'、'c' = '3'。

我尝试过这样的事情:

for (i in length(new)){
    var_names[i] <- paste(old[i], "=", new[i])
}

但它不能正常工作。我在这里做错了什么?

编辑

我对此有点不清楚。但我想要实现的是;

var_names<- c('a' = '1',
              'b' = '2',
              'c' = '3')

原因:https://vincentarelbundock.github.io/modelsummary/articles/modelsummary.html#coef-map

【问题讨论】:

  • paste(old, new, sep = ' = ') 应该可以工作。
  • paste(old,"=",new) [1] "a = 1" "b = 2" "c = 3"

标签: r syntax paste


【解决方案1】:

特别是如果你想在 a 和 b 周围加上引号

paste0("'",old,"'"," = ","'",new,"'")
[1] "'a' = '1'" "'b' = '2'" "'c' = '3'"

如果你想要一个字符串中的所有内容

paste0("'",old,"'"," = ","'",new,"'",collapse=", ")
[1] "'a' = '1', 'b' = '2', 'c' = '3'"

编辑:关于您的编辑,您的意思是这样吗?

names(new)=old
new
  a   b   c 
"1" "2" "3"

【讨论】:

  • 感谢您的回答。我注意到我对自己想要实现的目标有点不清楚。请看我的编辑。
  • 是的,您的编辑工作完美。我不敢相信它是如此简单..
【解决方案2】:

更新

根据你的更新,可以使用setNames

> setNames(new, old)
  a   b   c
"1" "2" "3"

有两个地方有语法/逻辑错误:

  1. 你没有初始化向量var_name
  2. 在for 循环中,您应该使用1:length(new)

下面是一个更正,它有效

var_names <- c()
for (i in 1:length(new)) {
  var_names[i] <- paste(old[i], "=", new[i])
}

你会看到

> var_names
[1] "a = 1" "b = 2" "c = 3"

实现相同结果的更有效方法是使用paste 或paste0,例如,

> paste(old, new, sep = " = ")
[1] "a = 1" "b = 2" "c = 3"

> paste0(old, " = ", new)
[1] "a = 1" "b = 2" "c = 3"

【讨论】:

    猜你喜欢
    • 2016-11-16
    • 2021-02-20
    • 2019-11-07
    • 2018-04-14
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多