有没有一种方法可以在循环内部定义“观察列表”?例如,只要data.frame的另一个观察值满足特定条件,我就可以运行以下代码来替换每个“观察为列表”,例如下面的代码,但是我需要将lists
创建为运行循环之前先设置NULL
lists
的集合。另外,我还没有弄清楚如何将list
放置在创建data.frame
的行中,是否可以这样做?
这是代码:
#line that creates the data.frame: I wished to know how to place the list
#(at the line after creating the data.frame object) inside the data.frame function.
df = data.frame(x=1:10)
#line that creates the list as NULL values before replacing them in the loop
df$y = list(c())
#random replacement condition
df$z = c(0,0,1,0,1,0,1,0,0,0)
#Loop: could I create the list variable on the run without creating it before the loop?
for(i in 1:10) {
if (df$z[i]==1) {
df$y[i] = list(c("a","b"))
}
}
如果按照某些原则(例如,整洁)有更先进的技术或推荐的方法来进行此操作,如果有人可以参考,我将很高兴。
答案 0 :(得分:1)
我不确定为什么要这么做,但是可以将代码减少为
df <- data.frame(x = 1:10, z = c(0,0,1,0,1,0,1,0,0,0))
df$y <- ifelse(df$z == 1, list(c("a","b")), list())
它会给出相同的结果。