在 R 中将 listcolumn 的部分设置为 NULL
Set parts of listcolumn to NULL in R
library(tidyverse)
data(mtcars)
mtcars <- rownames_to_column(mtcars,var = "car")
mtcars$id <- c(1:length(mtcars$car))
mtcars$make <- map_chr(mtcars$car,~strsplit(.x," ")[[1]][1])
mt2 <- mtcars %>% select(1:4,id,make) %>% nest(-make,.key = "l")
mt4 <- mt2[1:5,]
mt5 <- mt2[1:5,]
`
现在 - 我想将 mazda 的列表列设置为 NULL。
mt4[mt4$make=="Mazda","l"]<-NULL
但是,比较 mt4$l
和 mt5$l
我发现 "mazda" 元素已被删除,但其他元素已向上移动。
有人可以解释为什么这是合乎逻辑的吗?
我如何有选择地仅将列表列中的某个元素设为 NULL?
请在您的问题中包含非基础包。在这种情况下,我们需要:
library(dplyr)
library(purrr)
library(tidyr)
library(tibble)
(或者只是 library(tidyverse)
,我相信)。
通过将 NULL
分配给一个元素,您是在告诉 R 从列表中删除该元素,从而使其更短。如果要用 NULL
元素替换元素,请尝试
mt4[mt4$make=="Mazda","l"] <- list(list(NULL))
相反。 (如果条件 mt4$make=="Mazda"
是 return 多个匹配,这恰好也有效;显然不是这个例子的一个因素,但很高兴知道。)
library(tidyverse)
data(mtcars)
mtcars <- rownames_to_column(mtcars,var = "car")
mtcars$id <- c(1:length(mtcars$car))
mtcars$make <- map_chr(mtcars$car,~strsplit(.x," ")[[1]][1])
mt2 <- mtcars %>% select(1:4,id,make) %>% nest(-make,.key = "l")
mt4 <- mt2[1:5,]
mt5 <- mt2[1:5,]
`
现在 - 我想将 mazda 的列表列设置为 NULL。
mt4[mt4$make=="Mazda","l"]<-NULL
但是,比较 mt4$l
和 mt5$l
我发现 "mazda" 元素已被删除,但其他元素已向上移动。
有人可以解释为什么这是合乎逻辑的吗?
我如何有选择地仅将列表列中的某个元素设为 NULL?
请在您的问题中包含非基础包。在这种情况下,我们需要:
library(dplyr)
library(purrr)
library(tidyr)
library(tibble)
(或者只是 library(tidyverse)
,我相信)。
通过将 NULL
分配给一个元素,您是在告诉 R 从列表中删除该元素,从而使其更短。如果要用 NULL
元素替换元素,请尝试
mt4[mt4$make=="Mazda","l"] <- list(list(NULL))
相反。 (如果条件 mt4$make=="Mazda"
是 return 多个匹配,这恰好也有效;显然不是这个例子的一个因素,但很高兴知道。)