【问题标题】:Use rep in R over multiple lines在 R 中多行使用 rep
【发布时间】:2013-08-02 10:09:17
【问题描述】:

我在 CSV 文件中有以下内容,我希望它们在 R 中具有相同的格式,如下所示

01:00:00 02:00:00 03:00:00
15       80       67
30       44       2

我已经能够将它们放在一个变量中

textus="01:00:00 02:00:00 03:00:00 

15 80 67 

30 44 2"

然后

data <- unname(as.matrix(read.table(text = textus)))

之后,我尝试将它们与以下命令行放在一起:

data1 <- rep(data[1,],data[2,],data[3,])

但它一直给我以下错误行:

Message d'avis :
In rep(dat[1, ], dat[2, ], dat[3, ]) :
seul le premier élément de l'argument 'length.out' est utilisé

错误是法语,让事情变得更糟。

我已经尝试了以下方法,即使它只做了我希望 R 做的一半,它也能工作:

data1<-rep(dat[1,],dat[2,]) 

# results
01:00:00 02:00:00 03:00:00
15       80       67

data2<-rep(dat[1,],dat[3,])

# results
01:00:00 02:00:00 03:00:00
30       44       2

如果您对我所缺少的内容有任何意见,我会很乐意倾听。

最好的。

【问题讨论】:

  • 旁注:请参阅如何change language error
  • 为什么是rep?你的预期输出是什么? as.data.frame(t(data)) 会回答你的问题吗?
  • 嗨弗洛德尔,代表在这里显示的两行东西工作正常data1&lt;-rep(dat[1,],dat[2,])# results 01:00:00 02:00:00 03:00:00 15 80 67 我会试试你的方法
  • 嗨弗洛德尔,不完美,但我可以在之后使用重塑。谢谢。
  • 不,rep 用于完全不同的用途。您没有dat 对象,而是data 对象。而rep(data[1,],data[2,]) 则提供了完全不同的东西。

标签: r


【解决方案1】:

如果您不介意在两者之间写入文件,这将是最简单的方法:

tmp <- read.table(text=textus)

write.table(t(tmp), "tmp.csv", row.names = FALSE, col.names = FALSE, sep = ",")

read.table("tmp.csv", sep = ",")
#         V1 V2 V3
# 1 01:00:00 15 30
# 2 02:00:00 80 44
# 3 03:00:00 67  2

没有理由在 R 中进行转置(如在输入文件中)。R 的 data.frame 结构旨在将变量放在列中,将观察值放在行中,并且大多数函数都为此进行了优化。如果您只想将其以转置形式打印,您应该修改print.data.frame

【讨论】:

  • 您好 Roland,感谢您的回答。你说好的做法意味着变量在列中,观察在行中。但是,当我以这种方式绘图时,我没有带有 2 条曲线的绘图。而我的目标,是有一个阴谋。如果您对最佳实践有任何见解,我很乐意听到。提前致谢,安迪
  • 绘制数据的可能性有很多。 matplot(as.POSIXct(df[,1], format="%H:%M:%S"), df[,-1], type="l") 应该让你开始。阅读一些关于 R 的一般介绍,以及专门使用 R 进行绘图的介绍。
  • 好吧……从来没有听说过那个,也不知道你能做到这一点……(困惑)突然觉得很蹩脚,知识渊博……
  • @AndyK 是的,蚱蜢,知道你不知道是启蒙之路的第一步。 :-) 。所以去阅读并尝试不同的包和功能;你很快就会掌握它的窍门。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 2015-12-23
相关资源
最近更新 更多