- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我错过了这样一个简单问题的答案,请原谅我。
我想使用 cbind()
绑定(bind)两列。其中之一是长度较短的单个条目。
我可以让 R 提供 NA
对于缺失值?
该文档讨论了 deparse.level
争论,但这似乎不是我的解决方案。
此外,如果我可能如此大胆,是否还有一种快速的方法可以在较短的列前加上 NA
的?
最佳答案
不久前,我编写了一个名为 Cbind
的函数。那是为了做这种事情。在其当前形式下,它应该能够处理向量 data.frame
s 和矩阵作为输入。
现在,函数在这里:https://gist.github.com/mrdwab/6789277
以下是如何使用该功能:
x <- 1:5
y <- letters[1:4]
z <- matrix(1:4, ncol = 2, dimnames = list(NULL, c("a", "b")))
Cbind(x, y, z)
# x y z_a z_b
# 1 1 a 1 3
# 2 2 b 2 4
# 3 3 c NA NA
# 4 4 d NA NA
# 5 5 <NA> NA NA
Cbind(x, y, z, first = FALSE)
# x y z_a z_b
# 1 1 <NA> NA NA
# 2 2 a NA NA
# 3 3 b NA NA
# 4 4 c 1 3
# 5 5 d 2 4
padNA
,
dotnames
, 和
Cbind
,其定义如下:
padNA <- function (mydata, rowsneeded, first = TRUE) {
## Pads vectors, data.frames, or matrices with NA
temp1 = colnames(mydata)
rowsneeded = rowsneeded - nrow(mydata)
temp2 = setNames(
data.frame(matrix(rep(NA, length(temp1) * rowsneeded),
ncol = length(temp1))), temp1)
if (isTRUE(first)) rbind(mydata, temp2)
else rbind(temp2, mydata)
}
dotnames <- function(...) {
## Gets the names of the objects passed through ...
vnames <- as.list(substitute(list(...)))[-1L]
vnames <- unlist(lapply(vnames,deparse), FALSE, FALSE)
vnames
}
Cbind <- function(..., first = TRUE) {
## cbinds vectors, data.frames, and matrices together
Names <- dotnames(...)
datalist <- setNames(list(...), Names)
nrows <- max(sapply(datalist, function(x)
ifelse(is.null(dim(x)), length(x), nrow(x))))
datalist <- lapply(seq_along(datalist), function(x) {
z <- datalist[[x]]
if (is.null(dim(z))) {
z <- setNames(data.frame(z), Names[x])
} else {
if (is.null(colnames(z))) {
colnames(z) <- paste(Names[x], sequence(ncol(z)), sep = "_")
} else {
colnames(z) <- paste(Names[x], colnames(z), sep = "_")
}
}
padNA(z, rowsneeded = nrows, first = first)
})
do.call(cbind, datalist)
}
gdata
包已经有一个名为
cbindX
的函数处理
cbind
学习
data.frame
s 和具有不同行数的矩阵。它不能直接作用于向量,因此您需要将它们转换为
data.frame
首先。
library(gdata)
cbindX(data.frame(x), data.frame(y), z)
# x y a b
# 1 1 a 1 3
# 2 2 b 2 4
# 3 3 c NA NA
# 4 4 d NA NA
# 5 5 <NA> NA NA
关于r - cbind:有没有办法将缺失值设置为 NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19074163/
我想我正在寻找 rbind.fill 的类似物(在 Hadley 的 plyr 包中)对于 cbind 。我看了,没有cbind.fill . 我想做的是: #set these just for t
有人知道为什么以下代码的结果不同吗? a [1] "a" "b" "c" "d" colnames(cbind(ts(a),ts(b))) > [1] "ts(a).a" "ts(a).b" "ts
merger <- cbind(as.character(Date),weather1$High,weather1$Low,weather1$Avg..High,weather1$Avg.Low,sa
不知道为什么会这样。我有一个数据框 df2使用以下变量: EVTYPE TOTAL_FATALITIES TOTAL_INJURIES (fctr)
我正在尝试 cbind或 unnest或 as.data.table部分嵌套的列表。 id <- c(1,2) A <- c("A1","A2","A3") B <- c("B1") AB <- li
我有两个数据系列向量。 x = c("100"=2,"200"=2) y = c("150"=3,"200"=2) 我怎样才能合并它们,以便我得到: x y 100 2 N
我有像下面的 biglist 示例这样的数据,它是 2 个 2 个列表的列表。我想将每个列表中的第二个列表 cbind 一起像下面的结果示例一样。通常,我会尝试类似 lapply(biglist,cb
x = iris$Sepal.Width; y = iris$Species; m = cbind(x,y); m 的输出是: x y [1,] 3.5 1 [2,] 3.0
我有两个名为 h 的列表和 g . 它们每个都包含 244 个数据帧,如下所示: h[[1]] year avg hr sal 1 2010 0.300 31 2000 2
我有 94 个制表符分隔文件,没有标题,位于单个目录“/path/”中,第一列中有基因名称,第二列中有计数。有 23000 行。 我想将/path/中的所有 94 个文件读入 R 并合并所有 94
我正在尝试创建数据框的子集,当我这样做时,R切换日期列的格式。知道为什么或如何解决这个问题吗? > head(spyPr2) Date Open High Low Cl
在提问之前,我搜索并阅读了许多关于 stackoverflow 的其他问题,并尝试了 dplyr 包中的 join,但没有一个给出我想要的结果。 我有两个 dfs 并想将它们组合起来,使 df1$co
我对 cbind 的特性有疑问在数据表和数据框中。 如果我要绑定(bind)一个数据框(df)和一个数据表(dt),那么结果对象的类取决于第一个参数。 例子: > dt df dt x y z
这个问题在这里已经有了答案: Error: could not find function ... in R (10 个回答) 6年前关闭。 我正在使用 R: library(qpcR) final<
我在使用 cbind 向数据框中添加列的脚本时遇到了一些问题。我通过正则表达式选择这些列,我喜欢 cbind 在添加多于一列时自动提供前缀。如果您只附加一列,这将不起作用......即使我将此列转换为
我有 L : Var1 Freq 2 1103 6 6 1107 10 10 1112 7 21 1125 6 24 1129 10 31 1137 5 和
我想对两个 lm 输出进行逐列比较。类似这样的事情,除了我希望看到估计值旁边的估计值嵌套到估计值,Std Error 旁边的 Std Error 等。 x=runif(6);y=runif(6
就我而言,我有一个数字向量(future_prices)。我使用来自另一个向量(这里:pred_commodity_prices$futuredays)的日期向量来创建月份的数字。之后,我使用 cbi
如果我错过了这样一个简单问题的答案,请原谅我。 我想使用 cbind()绑定(bind)两列。其中之一是长度较短的单个条目。 我可以让 R 提供 NA对于缺失值? 该文档讨论了 deparse.lev
当使用cbind函数组合2个或更多矩阵时,生成的矩阵将继承列名称。下面是一个简单的例子来说明这一事实。我有两个 (2x2) 矩阵 m1 和 m2。 m1 的列是 a 和 b; m2 的列是 c 和 d
我是一名优秀的程序员,十分优秀!