保存for循环的结果
我在保存for循环的结果时遇到问题,可能犯了一个非常基本的错误。我尝试使用for循环从两列中提取第一个字母,如果其中任何一列是T,则为'foraging'的'trail.type'赋值,否则为'interest'赋值。下面的代码可以做到这一点,但是当我查看每个数据帧时,该列还没有被添加。有人知道为什么会这样吗 我正在使用的代码:保存for循环的结果,r,for-loop,R,For Loop,我在保存for循环的结果时遇到问题,可能犯了一个非常基本的错误。我尝试使用for循环从两列中提取第一个字母,如果其中任何一列是T,则为'foraging'的'trail.type'赋值,否则为'interest'赋值。下面的代码可以做到这一点,但是当我查看每个数据帧时,该列还没有被添加。有人知道为什么会这样吗 我正在使用的代码: dfs <- Filter(function(x) is(x, "data.frame"), mget(ls())) for (name in dfs){
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))
for (name in dfs){
name$fromf<-substr(name$from,1,1)
name$tof<-substr(name$to,1,1)
name$trail.type <- ifelse(name$fromf=='T', "foraging",
ifelse(name$tof=='T', "foraging",
'internest'))
name$fromf <- NULL
name$tof <- NULL
}
如果我们有数据帧列表,我们可以使用
lappy
。对于每个列表,我们检查from
或to
列是否以字母T
开头,并在此基础上将值分配给新列trail.type
lapply(lst1, function(x) cbind(x, trail.type = ifelse(grepl("^T", x[["from"]])
| grepl("^T", x[["to"]]), "foraging", "internest")))
其中lst1
是数据帧列表
比如说,
lst1 <- list(name, name)
lapply(lst1, function(x) cbind(x, trail.type = ifelse(grepl("^T", x[["from"]])
| grepl("^T", x[["to"]]), "foraging", "internest")))
#[[1]]
# from to strength trail.type
#1 N1 N2 1.67 internest
#2 N1 T1 1.11 foraging
#3 N2 N3 0.67 internest
#4 N3 N4 1.00 internest
#5 N3 N5 0.29 internest
#6 N5 N6 5.00 internest
#[[2]]
# from to strength trail.type
#1 N1 N2 1.67 internest
#2 N1 T1 1.11 foraging
#3 N2 N3 0.67 internest
#4 N3 N4 1.00 internest
#5 N3 N5 0.29 internest
#6 N5 N6 5.00 internest
lst1请提供一个可复制的示例?尝试name$trail.type您的代码对我有效:trail.type
添加到name
?@Phil是的,它是name
中的一个新列。对不起,我应该说得更清楚。dfs是数据帧的列表。因此,脚本通过名称添加trail.type作为列来遍历所有数据帧。但是,当循环完成时,我只有一个名为name的数据帧,它来自添加了trail.type的循环中的最后一个数据帧,但是列表中没有一个数据帧添加了列added.Perfect。非常感谢,这正是我想要它做的。我真的应该学习如何使用Lappy mapply等。
lst1 <- list(name, name)
lapply(lst1, function(x) cbind(x, trail.type = ifelse(grepl("^T", x[["from"]])
| grepl("^T", x[["to"]]), "foraging", "internest")))
#[[1]]
# from to strength trail.type
#1 N1 N2 1.67 internest
#2 N1 T1 1.11 foraging
#3 N2 N3 0.67 internest
#4 N3 N4 1.00 internest
#5 N3 N5 0.29 internest
#6 N5 N6 5.00 internest
#[[2]]
# from to strength trail.type
#1 N1 N2 1.67 internest
#2 N1 T1 1.11 foraging
#3 N2 N3 0.67 internest
#4 N3 N4 1.00 internest
#5 N3 N5 0.29 internest
#6 N5 N6 5.00 internest