相关疑难解决方法(0)

如何在不重复较短向量的元素的情况下cbind或rbind不同长度的向量?

cbind(1:2, 1:10)  
     [,1] [,2]  
  [1,]    1    1  
  [2,]    2    2  
  [3,]    1    3  
  [4,]    2    4  
  [5,]    1    5  
  [6,]    2    6  
  [7,]    1    7  
  [8,]    2    8  
  [9,]    1    9  
 [10,]    2   10  
Run Code Online (Sandbox Code Playgroud)

我想要一个像下面这样的输出

[,1] [,2]  
[1,] 1 1  
[2,] 2 2  
[3,]   3  
[4,]   4  
[5,]   5  
[6,]   6  
[7,]   7  
[8,]   8  
[9,]   9  
[10,]  10  
Run Code Online (Sandbox Code Playgroud)

r vector

47
推荐指数
3
解决办法
7万
查看次数

使用空df cbind一个df(cbind.fill?)

我想我正在寻找rbind.fill(在Hadley的plyr包装中)的类比cbind.我看了,但没有cbind.fill.

我想做的是以下内容:

#set these just for this example
one_option <- TRUE
diff_option <- TRUE

return_df <- data.frame()

if (one_option) {
    #do a bunch of calculations, produce a data.frame, for simplicity the following small_df
    small_df <- data.frame(a=1, b=2)
    return_df <- cbind(return_df,small_df)
}

if (diff_option) {
    #do a bunch of calculations, produce a data.frame, for simplicity the following small2_df
    small2_df <- data.frame(l="hi there", m=44)
    return_df <- cbind(return_df,small2_df)
}

return_df
Run Code Online (Sandbox Code Playgroud)

可以理解,这会产生错误:

Error in data.frame(..., check.names …
Run Code Online (Sandbox Code Playgroud)

r dataframe cbind

39
推荐指数
3
解决办法
2万
查看次数

组合不同长度的(cbind)向量

我有几个长度不等的向量,我想要cbind他们.我把矢量放到一个列表中,我试图结合使用do.call(cbind, ...):

nm <- list(1:8, 3:8, 1:5)
do.call(cbind, nm)

#      [,1] [,2] [,3]
# [1,]    1    3    1
# [2,]    2    4    2
# [3,]    3    5    3
# [4,]    4    6    4
# [5,]    5    7    5
# [6,]    6    8    1
# [7,]    7    3    2
# [8,]    8    4    3
# Warning message:
#   In (function (..., deparse.level = 1)  :
#         number of rows of result is not a multiple of vector …
Run Code Online (Sandbox Code Playgroud)

merge r list matrix

30
推荐指数
2
解决办法
4万
查看次数

将不均匀列表转换为 data.frame

在简单的情况下,将偶数列表转换为数据框可以通过as.data.frame(). 例如 :

> (x1 <- list(a = 1:3, b = 4:6, c = 7:9))
> as.data.frame(x1)

#   a b c
# 1 1 4 7
# 2 2 5 8
# 3 3 6 9
Run Code Online (Sandbox Code Playgroud)

但是,如果列表中组件的长度不相等,则as.data.frame()不起作用。

> (x2 <- list(a = 1:4, b = 5:6, c = 7:11, d = 12:14))

# $a
# [1] 1 2 3 4
# $b
# [1] 5 6
# $c
# [1]  7  8  9 10 11
# …
Run Code Online (Sandbox Code Playgroud)

r dataframe

4
推荐指数
1
解决办法
2644
查看次数

将具有各种长度向量的列表转换为R中的data.frame的最简单方法

这里我有一个不同长度向量的列表.我想要一个data.frame.我在SO中看过很多关于它的帖子(参见参考资料),但是没有一个像我预期的那样简单,因为这实际上是数据预处理中的常见任务.谢谢.

这里最简单的意思as.data.frame(aa)是它是否有效.所以R的基础包中的一个函数会很棒.sapply(aa, "length<-", max(lengths(aa)))实际上有四个功能.

一个例子如下所示.

输入:

aa <- list(A=c(1, 3, 4), B=c(3,5,7,7,8))
Run Code Online (Sandbox Code Playgroud)

输出:

A B
1 3
3 5
4 7
NA 7
NA 8
Run Code Online (Sandbox Code Playgroud)

A和B是data.frame的colnames.

答案是sapply(aa, '[', seq(max(sapply(aa, length)))),但它也很复杂.

参考:

  1. 如何将包含不同长度矢量的列表转换为R中的可用数据帧?

  2. 组合不同长度的(cbind)向量

r list dataframe data-science

2
推荐指数
1
解决办法
893
查看次数

从数据框列中删除NA.移除后不同长度的列

这就是我的数据的样子:

structure(list(`Name1` = c("Mark", 
                                                           NA, NA, NA, NA, NA), Name2 = c(NA, "Stefan", 
                                                                                                                   "Clara", NA, NA, NA), `Name3` = c(NA, NA, 
                                                                                                                                                                           NA, "Max", "Pete", "Gabe"), `Name4` = c("Titan", 
                                                                                                                                                                                                                                                     NA_character_, NA_character_, NA_character_, NA_character_, NA_character_
                                                                                                                                                                           ), `Name5` = c(NA_character_, NA_character_, 
                                                                                                                                                                                                              NA_character_, NA_character_, "Tom", NA_character_), 
               Name6 = c(NA_character_, "Narq", NA_character_, 
                                        NA_character_, "Seba", NA_character_), Name7 = c(NA_character_, 
                                                                                                                      NA_character_, "Greg", NA_character_, NA_character_, 
                                                                                                                      NA_character_), Name8 = c(NA_character_, 
                                                                                                                                                                            NA_character_, NA_character_, "Terry", NA_character_, 
                                                                                                                                                                            NA_character_), Name9 = c(NA_character_, 
                                                                                                                                                                                                                                NA_character_, NA_character_, NA_character_, "Coaty", 
                                                                                                                                                                                                                                NA_character_), Name10 = c(NA_character_, 
                                                                                                                                                                                                                                                                                                           NA_character_, "Meg", NA_character_, …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
277
查看次数

将不同长度的命名向量列表转换为 tibble

我有以下清单

\n
example <- list(a = c(1, 2, 3),\n                b = c(2, 3),\n                c = c(3, 4, 5, 6))\n
Run Code Online (Sandbox Code Playgroud)\n

我想将其转换为以下小标题

\n
# A tibble: 9 \xc3\x97 2\n  name  value\n  <chr> <dbl>\n1 a         1\n2 a         2\n3 a         3\n4 b         2\n5 b         3\n6 c         3\n7 c         4\n8 c         5\n9 c         6\n
Run Code Online (Sandbox Code Playgroud)\n

我发现了有关此主题的多个 StackOverflow 问题,例如此处此处此处,但没有一个问题涉及向量名称不会成为列名称的特殊情况。

\n

我设法通过如下所示的良好旧循环实现了预期的结果,但我正在寻找一种更快、更优雅的方法。

\n
library(dplyr)\n\nexample_list <- list(a = c(1, 2, 3),\n                     b = c(2, 3),\n                     c = c(3, 4, 5, 6))\n\nexample_tibble …
Run Code Online (Sandbox Code Playgroud)

r

1
推荐指数
1
解决办法
334
查看次数

标签 统计

r ×7

dataframe ×3

list ×2

cbind ×1

data-science ×1

matrix ×1

merge ×1

vector ×1