我正在运行一个循环来分配值
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
我应该进行些什么调整才能使代码循环运行。
请提出建议。
答案 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