我有一组data.frame,具有相同的列尺寸,但行数不同。
DATA.FRAME.A
Column_A Column_B Column_C Column_D Column_E
2001-02-20 10 11 5 8
DATA.FRAME_B
Column_F Column_G Column_W Column_T Column_Q
2008-08-7 50 21 10 50
DATA.FRAME_C
Column_H Column_J Column_K Column_S Column_P
2001-02-02 13 15 61 7
我的目的是使所有data.frame的第一行都相同
我写这个周期是为了使我的代码简单。
t <- list(DATA.FRAME_A, DATA.FRAME_B, DATA.FRAME_C)
for (i in t ) {
names[i] <- c("Data", "Open", "Max", "Minimun", "Close")
}
R不会给我任何类型的错误。
哪里错了?
我想要这些结果
DATA.FRAME.A
Data Open Max Minimun Close
2001-02-20 10 11 5 8
DATA.FRAME_B
Data Open Max Minimun Close
2008-08-7 50 21 10 50
DATA.FRAME_C
Data Open Max Minimun Close
2001-02-02 13 15 61 7
先谢谢了。
弗朗切斯科
答案 0 :(得分:2)
考虑lapply
,它是 apply 系列的一部分,它们是有用的迭代函数,它们返回与输入相同数量的元素,并且在您的情况下可以返回修改后的数据框元素。甚至认为setNames()
是返回命名对象的右手函数。
t <- list(DATA.FRAME_A, DATA.FRAME_B, DATA.FRAME_C)
# ITERATE THROUGH EACH DF OF t, RENAMING COLUMNS, RETURNING MODIFIED DF
new_t <- lapply(t, function(i) setNames(i, c("Data", "Open", "Max", "Minimun", "Close"))
# RESULTS
lapply(new_t, head)
答案 1 :(得分:0)
尝试一下:
t <- c("DATA.FRAME.A", "DATA.FRAME.B", "DATA.FRAME.C")
for (i in 1:length(t)) {
names(get(t[i])) <- c("Data", "Open", "Max", "Minimun", "Close")
}
答案 2 :(得分:0)
根据您编写的代码,循环变量unlock()
将是列表std::mutex m;
{
std::lock_guard lock(m);
// Everything here is mutex-protected.
}
// Here you are guaranteed the std::mutex is released.
的各个项(不是列表中的 index ,而是列表中的每个项)项目本身)。另外,i
为此将更加简单。编写此循环的更好方法是:
t
答案 3 :(得分:0)
在R中子列表的子设置需要两个方括号
t <- list(DATA.FRAME_A, DATA.FRAME_B, DATA.FRAME_C)
for (i in seq_along(t) ) {
names(t[[i]]) <- c("Data", "Open", "Max", "Minimun", "Close")
}
您所做的不是错误,您可以在for循环中修改i,但是i是为for循环创建的临时变量,并且在每次迭代后都会被销毁,而不是修改列表