将列表定义为data.frame中观察值的便捷方法

时间:2018-12-05 13:05:55

标签: r list

有没有一种方法可以在循环内部定义“观察列表”?例如,只要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"))  


  }

}

如果按照某些原则(例如,整洁)有更先进的技术或推荐的方法来进行此操作,如果有人可以参考,我将很高兴。

1 个答案:

答案 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())

它会给出相同的结果。