【问题标题】:Merge 2 vectors with different lengths into a data frame [duplicate]将2个不同长度的向量合并到一个数据框中[重复]
【发布时间】:2017-05-18 15:02:32
【问题描述】:

我不得不说我半小时前才开始使用 R,从 SQL Server 运行 R 脚本,所以我是他们所说的完全菜鸟。

我正在尝试将两个 R 向量合并到一个数据框中,但我的问题是向量的长度不同。

我不确定这是否可以做到,虽然我不一定明白为什么不这样做?

我的 R 脚本是:

n <- c(2, 3, 5, 6);
s = c("aa", "bb", "cc");
df = data.frame(n, s);

我得到的错误是:

data.frame(n, s) 中的错误:参数意味着不同的数量 行:4、3 调用:source -> withVisible -> eval -> eval -> data.frame

ScaleR 中的错​​误。检查输出以获取更多信息。错误 eval(expr,envir,enclos):ScaleR 中的错​​误。检查输出 更多信息。调用:source -> withVisible -> eval -> eval -> .调用执行停止

基本上我正在想象做的是生成一个类似于LEFT JOIN 的结果集。

2    aa
3    bb
5    cc
6    NULL

我问自己是否应该在 R 数据框中指定“替换 NULL”值,但我不确定这是否是一个解决方案。

【问题讨论】:

  • 那里不能有NULL,而是NA(用于丢失):L = list(n = n, s = s); data.frame(lapply(L, `length&lt;-`, max(lengths(L))))。我想这有一些骗局。
  • 酷,让我知道进展如何。如果您有任何 cmets 或建议,请在 R 聊天室chat.stackoverflow.com/rooms/25312/r-public 否决票可能来自那些认为您应该自己找到欺骗的人(在这种情况下不是我)。 (顺便说一句,我在欺骗目标列表中添加了 Nico 的链接。)
  • @Frank 感谢您提供更多信息!我猜在这种基本类型的场景中很可能会被骗,但是像我这样有限的上下文和 R 知识,这似乎有点“不公平”。虽然我确实花时间查看 Stackoverflow 建议的问题,看看问题是否相似(但它们不是)。
  • 谢谢@NicoCoallier!我一定会关注您的所有链接!我正处于尝试了解 R 并尽可能多地理解的状态,所以每条评论对我来说都是一个迷你金矿。
  • @RaduGheorghiu 我目前正在研究一个 R 格式......它目前只有法语,但看看脚本你会很好地理解数据类型和格式...... .github.com/NicoCoallier/Formation_R/blob/master/…我很快就会做一个英文的:)

标签: r vector dataframe merge sql-server-2016


【解决方案1】:

这个可能:

sq <- seq(max(length(n), length(s)))
data.frame(n[sq], s[sq])

#  n.sq. s.sq.
#1     2    aa
#2     3    bb
#3     5    cc
#4     6  <NA>

【讨论】:

  • 我喜欢这个!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 2022-06-17
  • 2017-12-13
  • 2014-08-13
相关资源
最近更新 更多