我在R中构建了一个3D数组(尽管名称似乎没有显示):
v.arr <- array(1:18, c(2,3,3), dimnames = c("A", "B", "X",
"Y","Z","P","Q","R"))
Run Code Online (Sandbox Code Playgroud)
当它打印到屏幕上时会显示如下:
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
Run Code Online (Sandbox Code Playgroud)
我使用以下方法将其写入文件:
write.table(v.arr, file = “Test Data”)
Run Code Online (Sandbox Code Playgroud)
然后我再读一遍:
test.data <- read.table(“Test Data”)
Run Code Online (Sandbox Code Playgroud)
我明白了
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 1 3 5 7 …Run Code Online (Sandbox Code Playgroud) 我想初始化N个命名的空数据帧,每个数据帧中有X行和Y列,并将它们放在一个列表中.稍后我将通过添加计算向量来填充它们.这是我所知道的一个新手问题,但是如何做到这一点呢?例如:
my.names <- c("G", "H", "J")
N <- 3
my.list <- ??? ## how?
Run Code Online (Sandbox Code Playgroud)
(根据回复编辑...)我采用这种方法的原因是我有一个很大的循环,每次循环都会创建N个向量.我需要在每次迭代时保存这些结果.我打算做以下事情:
for(i in 1:N) my.list[[i]] <- my.vec[i]
Run Code Online (Sandbox Code Playgroud)
在循环中的每个传递.3D数据框或矩阵也可以做同样的事情.
这一定很容易,但我似乎无法使其发挥作用.我有两个不等长的命名向量:
x <- as.vector(c(5, 10,15,20))
names(x) <- c("A", "B", "C", "D")
y <- as.vector(c(7, 12))
names(y) <- c("A", "D")
Run Code Online (Sandbox Code Playgroud)
我想添加它们并保留最长的命名约定.我希望x + y能够产生:
A B C D
12 10 15 32
Run Code Online (Sandbox Code Playgroud)
我已经尝试使长度与其他地方建议的相等,并允许算术,但不保留命名约定.我也尝试过这样的事情:
z <- x[names(y)] + y
Run Code Online (Sandbox Code Playgroud)
但这让我得到算术,但不保留结构.
我有两个向量,说:
x <- c(2, 3, 5, 7, 9, 11)
names(x) <- c("a", "b", "c", "d", "e", "f")
y <- c(33,44,55)
names(y) <- c("b", "d", "f")
Run Code Online (Sandbox Code Playgroud)
所以那x是
a b c d e f
2 3 5 7 9 11
Run Code Online (Sandbox Code Playgroud)
并且y是
b d f
33 44 55
Run Code Online (Sandbox Code Playgroud)
我想x用y具有相同名称的值替换其中的值,以便结果将是新的x:
a b c d e f
2 33 5 44 9 55
Run Code Online (Sandbox Code Playgroud)
我敢肯定这已经在某个地方得到了回答,但是我找不到。
我有几个项目的集群数据,这些项目也有与之关联的排名.群集和排名数据框如下所示:
clus rank
A 1 1
B 1 3
C 1 5
D 2 4
E 2 6
F 3 9
G 3 8
H 3 7
Run Code Online (Sandbox Code Playgroud)
我想只获取每个集群中的第一个名称和排名,但只获取每个集群中的单个项目,以便我得到:
A 1
D 4
F 9
Run Code Online (Sandbox Code Playgroud)
我可以用一些for循环来做这个,但必须有一个更好的方法.建议表示赞赏.
我的代码完成执行后,我一直在输入RStudio的编辑窗口,当时我的目的是在控制台窗口中提供一些输入.是否有可以执行的R代码会自动将焦点移动到RStudio的控制台窗口?
我确定这个人就坐在我面前,但我看不到它.我有一个数据框,"a",这样:
>a
Chars Numbers
This A 15
That B 22
Other C 18
Run Code Online (Sandbox Code Playgroud)
我只想将Numbers列乘以标量,比如b < - 10,并保持数据框的其他部分不变.(我会在结果的Numbers列中得到150,220,180,但是相同的行/列标题和Chars列.)
什么不起作用是*b,尝试使用apply或$ Numbers*b.
假设我在R中有3个向量:
x <- c("xskdlfl", " y", "lkjsf")
y <- c(22.5, 6, 7.0)
z <- c("slk","llkjdf", "xx")
Run Code Online (Sandbox Code Playgroud)
我想产生一个格式化的表格输出,最右边的字符对齐,除第一列外的所有列都这样对齐:
xskdlfl y lkjsf
22.5 5.6 7.0
slk llkjdf xx
Run Code Online (Sandbox Code Playgroud)
在R中没有太多凌乱的编程的情况下,我无法弄清楚如何使用sprintf做到这一点。在R中使用sprintf可以做到这一点的简单方法吗?使用“格式?” 我希望链接到一个好的sprintf教程。提前致谢。