如何筛选非空向量并保留其名称存入DataFrame?
解决方法
先把所有目标向量放进命名列表里保留名称,再筛选出非空元素,最后转成DataFrame即可。
具体代码实现
# 定义原始向量 att1 = 5 att2 = 4 att3 = character() att4 = 8 # 将向量存入命名列表,保留每个向量的名称 vec_list <- list(att1 = att1, att2 = att2, att3 = att3, att4 = att4) # 筛选长度大于0的非空向量 goodData <- vec_list[sapply(vec_list, length) > 0] # 转换为DataFrame scoresDf <- data.frame(goodData)
代码说明
- 用
list()创建命名列表:直接指定元素名称和对应向量,避免名称丢失 sapply(vec_list, length):遍历列表返回每个向量的长度,以此判断是否为空- 筛选后的
goodData是保留原名称的子列表,直接转成DataFrame就能得到列名正确的结果
运行后scoresDf会包含att1、att2、att4三列,完全符合需求。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

