当前位置: 首页 > 知识库问答 >
问题:

如何确定字符向量是有效的数字向量还是整数向量

魏刚豪
2023-03-14

我正在尝试将嵌套列表结构转换为DataFrame。该列表类似于以下内容(它是来自解析的JSON的序列化数据,使用httr包读取)。

  myList <- list(object1 = list(w=1, x=list(y=0.1, z="cat")), object2 = list(w=NULL, x=list(z="dog")))

编辑:我最初的示例数据太简单了。实际数据是不完整的,这意味着并非每个对象都存在所有变量,并且一些列表元素是空的。我编辑了数据来反映这一点。

  flatList <- lapply(myList, FUN= function(object) {return(as.data.frame(rbind(unlist(object))))}) 
  myDF <- do.call(plyr::rbind.fill, flatList)
  str(myDF)

  #'data.frame':    2 obs. of  3 variables:
  #$ w  : Factor w/ 2 levels "1","2": 1 2
  #$ x.y: Factor w/ 2 levels "0.1","0.2": 1 2
  #$ x.z: Factor w/ 2 levels "cat","dog": 1 2

共有1个答案

姬浩渺
2023-03-14

正如这里所讨论的,检查As.numeric是否返回na值是检查字符串是否包含数字数据的一种简单方法。现在您可以执行以下操作:

myDF2 <- lapply(myDF, function(col) {
  if (suppressWarnings(all(!is.na(as.numeric(as.character(col)))))) {
    as.numeric(as.character(col))
  } else {
    col
  }
})
str(myDF2)
# List of 3
#  $ w  : num [1:2] 1 2
#  $ x.y: num [1:2] 0.1 0.2
#  $ x.z: Factor w/ 2 levels "cat","dog": 1 2
 类似资料:
  • 我有以下格式的数据。向量的第一个元素指的是标题,向量的第二个到底部指的是针对标题的值。我希望以表格/结构化格式(或带有标题和值的数据框)放置数据。

  • 问题内容: 我有一个具有几个命​​令的应用程序。当您键入某个命令时,您必须输入有关某物/某人的其他信息。现在,根据情况,信息必须严格为整数或字符串。 但是,无论您使用raw_input()在Python中键入的内容实际上是一个字符串,无论如何,更具体地讲,我很快会不加尝试地……除非查看变量是否由数字或字符组成? 问题答案: 我认为您有两种选择: 只需尝试将其转换为,但要捕获异常: except V

  • 问题内容: 我对位向量如何实现此功能感到困惑(对位向量不太熟悉)。这是给出的代码。有人可以引导我完成这个吗? 特别是,这是怎么做的? 问题答案: 在这里用作位存储。整数值中的每个位都可以视为一个标志,因此最终是一个位数组(标志)。代码中的每一位都说明是否在字符串中找到带有位索引的字符。您可以出于相同的原因而不是使用位向量。它们之间有两个区别: 大小 。具有固定大小,通常为4个字节,这意味着8 *

  • 与结构向量相比,我有一个过滤掉字符串输入vec的工作解决方案。但是,我的代码似乎很复杂,我尝试使用iter::filter(https://doc.rust-lang.org/stable/std/iter/struct.Filter.html)简化代码。这引起了问题,因为迭代器返回的值是引用,不能直接使用。似乎我对iter的理解以及在结构向量中可以做什么需要刷新。下面是工作的简化过滤代码: 有没

  • 整理周二的数据集,我看不到如何拆分“流派”列。我试过:

  • 在最近的一次采访中,我建议使用向量 编码过程结束后,他们说在向量上使用pair是个好主意,并要求我详细说明我之前所说的“更重”是什么意思。不幸的是,我无法详细说明。是的,我知道我们只能在一对中输入两个值,但在一个向量中可以输入更多的值,并且当向量的大小==容量等时,该向量会自动调整大小。但是我应该如何回答他们的问题?为什么具体使用<代码>向量