如何避免“ $运算符对于原子向量无效”

时间:2018-11-20 22:50:31

标签: r

我正在运行一个循环来分配值

for (i in 1:4)
t[i]<-print(noquote(paste0("t_",i)))

其输出为

[1] t_1
[1] t_2
[1] t_3
[1] t_4

现在,当我尝试将其与函数一起运行时

    for (i in 1:length(t))
    print(sum(t[i]$total_counts))

 it throws up an error: Error: $ operator is invalid for atomic vectors

但是,如果我像这样运行它,它就可以正常工作

sum(t_1$total_counts)
[1] 27347116

我应该进行些什么调整才能使代码循环运行。

请提出建议。

1 个答案:

答案 0 :(得分:3)

我假设void* print_task(void* ptr) { // obtain the shared pointer from the dynamically created one guarantees // we will bee accessing a living control block preventing an // end-of-lifetime catastrophe std::shared_ptr<int> val = *std::unique_ptr<std::shared_ptr<int>>(static_cast<std::shared_ptr<int>*>(ptr)); // CALL MY API WHICH TAKES A SHARED_PTR AS ARGUMENT std::cout << "thread job done \n"; return nullptr; } 至t t_1是您环境中对象的名称,并且您想遍历这些对象并执行操作。在这种情况下,您需要使用_n

get

正如@joran所建议的那样,更好的方法是将所有t_1 <- data.frame(x=1:10, y = 11:20) t <- "t_1" sum(get(t[1])$x) #[1] 55 对象收集到一个列表中,然后在该列表上进行操作。

t_n