r - 为什么列表标签按字面意思使用标签名称,如何防止这种情况发生?

标签 r list

我正在创建一个列表,当我创建列表时,列表元素需要有一个标签。 (我正在创建一个朴素贝叶斯似然表列表。)

这是我正在做的一个简化示例:

list1 <- list()
names <- c("An", "example")

for (i in names){
    list1 <- append(list1, list(i = "hello"), after=length(list1))   
}

输出:

$i
[1] "hello"

$i
[1] "hello"

如您所见,我用来将列表元素标记为“i”的方法按字面意思使用了“i”,而不是像在 for 循环参数中那样对其进行解释。

我以前从未在 for 循环中遇到过这种情况。

问题

为什么会这样?

我该怎么做才能停止对迭代器的字面解释?

我希望看到的输出是:

$"An"
[1] "hello"

$"example"
[1] "hello"

最佳答案

根据OP的代码,我们可以将其修改为用'i'设置名称

for (i in names){
   list1 <- append(list1, setNames(list("hello"), i), after=length(list1))   
}

list1
#$An
#[1] "hello"

#$example
#[1] "hello"

虽然我们不需要循环。如果我们需要复制一个 'value' 即 'hello',用 list 包装它,使用 rep 复制它并用 setNames 设置名字>

setNames(rep(list("hello"), 2), names)
#$An
#[1] "hello"

#$example
#[1] "hello"

在 OP 的代码中,当我们执行“i = value”时,它只是将列表元素命名为“i”,而不是检索存储在对象中的值

list(i = 1, i = 2)
#$i
#[1] 1

#$i
#[1] 2

关于r - 为什么列表标签按字面意思使用标签名称,如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790468/

相关文章:

python - 如何将众多类型的列表附加到单个字符串(python)

r - 函数参数在 R 的 'combn' 中如何工作?

python - 如何将相邻元素简化为单个元素

Python 相当于 R 的 Pandas 数据框列表

r - R中的参数检查

php - 使用 PHP 和 MySQL 构建任务列表

python - 如何将两个列表中的每个元素与其他列表中的每个元素进行比较,然后将结果合并到一个字符串中

Android: 如何在 ListView 中显示图像?

r - 循环遍历矩阵中行积的所有组合

r - 删除两个ggplot图例中的重复项