r - 为R中的空行赋值
问题描述
我有一个函数返回一个超过 50 列(一行)的数据框。这个函数在一个循环(lapply)内被调用,所以我得到一个数据帧列表,每行一行。
我在函数的最开始初始化一个空数据框,以填充进程返回的实际数据(此处为测试的简短版本)
df <- read.csv(text = "conn,pc,server,profile")
R> df
[1] conn pc server profile car id amount
<0 rows> (or 0-length row.names)
考虑到该过程有时不会为所有列返回值,我想为该行分配值。
类似的 SO 问题往往依赖于以这种方式初始化数据框:
df <- data.frame("conn"= NA, "pc"= NA, "server"= NA, "profile" = NA)
但我不想要一行 NA,以防没有返回值。
所以在我的功能中,我首先尝试了:
returned.conn.value <- 3 # assigned by hand for the sake of simplicity
df$conn <- returned.conn.value
Error in `$<-.data.frame`(`*tmp*`, conn, value = 3) :
replacement has 1 row, data has 0
所以我发现没有办法为空数据框中的列添加值,但是......
df[1,1] <- 3
令我惊讶的是,这奏效了。但是,我认为按索引为列赋值非常难看,所以我尝试了这个:
grep("^conn$", colnames(df))
[1] 1
确实更丑,因为它迫使我为每一列写相同的行(而不是手动计数,是的)
所以,我怕我走上了一条死路,无路可走。
有什么方法可以初始化一个空的数据框,因为它可以让我像下面那样做简单的分配而没有问题?
df$conn <- 3
任何提示将不胜感激。
解决方案
推荐阅读
- c# - 从类型对象创建数组
- vim - 在neovim中将自动缩进设置为空格?
- javascript - Create-React-App 测试和 Jest Mocking
- javascript - 无法弄清楚为什么我的文字没有变成绿色
- docker - 在 Nginx 代理后面时,Keycloak Docker Instace 中的 X-Frame-Options 拒绝加载
- python - Python读取文件时使用什么内存资源
- python - Keras/tensorflow:无法从损失函数调用 tf.Print()
- vb.net - Process() 中程序文件 (86) 路径的正确 Visual Basic 引用
- c++ - 如何知道来自文本文件的输入是否是 C++ 中的有效数字
- sql - 对 Informix 的 MS SQL/OPENQUERY 调用——单引号太多?太少了?