R 如何为数据帧中未找到的值获取NA
我有一个值向量和一个dataframe,我可以使用以下命令在dataframe的特定列中找到向量的每个项:R 如何为数据帧中未找到的值获取NA,r,dataframe,R,Dataframe,我有一个值向量和一个dataframe,我可以使用以下命令在dataframe的特定列中找到向量的每个项: lapply(l, function(x) df[which(df$col1==x),col2]) 如何为数据帧中不可用的值获取NA 例如: df: col1 col2 1 a 1 b 2 c l=c(1,3) output: col1 col2 1 a,b 3
lapply(l, function(x) df[which(df$col1==x),col2])
如何为数据帧中不可用的值获取NA
例如:
df: col1 col2
1 a
1 b
2 c
l=c(1,3)
output: col1 col2
1 a,b
3 NA
如果某事物不是整数(0)、字符(0)等,则该函数为TRUE。 (它们的共同点是长度为零):
non.zero.vec 0
任何具有这种零长度值元素的向量都可以使用
zero2na <- function(vec) sapply(vec, function(x) ifelse(non.zero.vec(x), x, NA))
## e.g.
zero2na(c(1, 2, integer(0)) ## [1] 1 2 NA
zero2na使用data.table您可以通过运行到l
(您的向量)的二进制连接来有效地实现这一点
数据:
df <- structure(list(col1 = c(1L, 1L, 2L), col2 = c("a", "b", "c")), .Names = c("col1","col2"), class = "data.frame", row.names = c(NA, -3L))
l <- c(1, 3)
library(magrittr)
lapply(l, function(x){
res<-df[[2]][df[[1]]==x] %>% paste(collapse=",")
if(res=="") res = NA
return(cbind(x,res))
}) %>% do.call(rbind,.)
x res
[1,] "1" "a,b"
[2,] "3" NA
我不太清楚。发布一些输入和所需输出。请提供l
和df
对象的示例数据以及预期输出。当我使用unlist获取此函数的输出时,所有字符(0)值都将被删除。在对这些值使用unlist之后,我想得到NA。请提供。您可能来自Python。Python中的列表和R中的是不同的东西。在你的例子中,你有一个数值向量。而且,list
是一种不好的调用方式,它非常简短(+1)!
df <- structure(list(col1 = c(1L, 1L, 2L), col2 = c("a", "b", "c")), .Names = c("col1","col2"), class = "data.frame", row.names = c(NA, -3L))
l <- c(1, 3)
library(magrittr)
lapply(l, function(x){
res<-df[[2]][df[[1]]==x] %>% paste(collapse=",")
if(res=="") res = NA
return(cbind(x,res))
}) %>% do.call(rbind,.)
x res
[1,] "1" "a,b"
[2,] "3" NA