我有一个数据帧,其中前3列是最后一列的标记名称,这是一个矩阵列表。每个矩阵都是二进制的(只有1和0)。我想从每一行中提取一个标记名称,并用该标记名称替换行矩阵中1的所有值,但是我想避免使用循环,以便我可以并行地对所有行执行此操作。
示例数据框:
> df1
name scenario Fire
1 name1 scene1 1, 1, 1, 0
2 name2 scene2 0, 1, 0, 1
3 name3 scene3 0, 0, 0, 1
> class(df1$Fire)
[1] "list"
> df1$Fire
[[1]]
[,1] [,2]
[1,] 1 1
[2,] 1 0
[[2]]
[,1] [,2]
[1,] 0 0
[2,] 1 1
[[3]]
[,1] [,2]
[1,] 0 0
[2,] 0 1
目标格式如下所示。。。
> df1$Fire
[[1]]
[,1] [,2]
[1,] "scene1" "scene1"
[2,] "scene1" "0"
[[2]]
[,1] [,2]
[1,] "0" "0"
[2,] "scene2" "scene2"
[[3]]
[,1] [,2]
[1,] "0" "0"
[2,] "0" "scene"
我尝试过使用apply(df1,1,function)
方法,但没有成功,因为结果输出是列表格式的,而不是获得df1的原始结构。有什么想法吗?
您可以使用映射
:
df1$Fire <- Map(function(x, y) replace(x, x == 1, y), df1$Fire, df1$scenario)
df1$Fire
#[[1]]
# [,1] [,2]
#[1,] "scene1" "scene1"
#[2,] "scene1" "0"
#[[2]]
# [,1] [,2]
#[1,] "0" "0"
#[2,] "scene2" "scene2"
#[[3]]
# [,1] [,2]
#[1,] "0" "0"
#[2,] "0" "scene3"
数据
通常情况下,如果您使用dput
以可复制的形式添加数据会更好,这样我们就不必从头开始构建它。
df1 <- structure(list(name = c("name1", "name2", "name3"), scenario = c("scene1",
"scene2", "scene3"), Fire = list(structure(c(1, 1, 1, 0), .Dim = c(2L,
2L)), structure(c(0, 1, 0, 1),.Dim = c(2L, 2L)), structure(c(0,
0, 0, 1),.Dim = c(2L, 2L)))),row.names = c("1", "2", "3"),class = "data.frame")
问题内容: 假设我有一个numpy数组: 我有一个对应的“向量”: 我如何沿每一行进行减法或除法运算,所以结果是: 长话短说:如何使用对应于每一行的1D标量数组在2D数组的每一行上执行操作? 问题答案: 干得好。您只需要与广播结合使用(或):
问题内容: 如何将函数应用于变量输入列表?例如,函数返回真值,但不返回函数的实际输出。 预期的输出是: 我知道是内置的。这只是一个例子。 问题答案: 我认为您的意思是使用而不是: 更简单的是,您可以使用而不是从中导入(感谢@alecxe): 在Python 2.x中,通过将给定函数应用于列表中的每个元素来构造新列表。通过限制使用给定函数求值的元素来构造新列表。 在Python 3.x中,和构建迭代
我想替换一行数据的每个值。帧,对于大小相等的逻辑矩阵,其值为TRUE,由向量的对应行的值确定。以下是一个例子: 所以结果应该是这样的: 有没有不使用循环的方法来实现这一点?谢谢
我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的
我想应用一个自定义函数并创建一个名为population2050的派生列,该列基于数据框中已经存在的两列。 当我运行上面的代码时,我得到一个错误。我是否没有正确使用“应用”功能?
我的问题是当用户输入文本时,使用 .split() 时应该有两个要拆分的元素,但是对于它拆分的项目,我如何将它们放入不同的列表中,以便我可以使用基于整数的列表进行计算。 e、 g.用户输入“skyrim,100”,“skyrism”条目是一个字符串,但带有数字(整数)“100”。 游戏名称(字符串)、小时(整数) 天际 , 100 遗忘 , 25 侠盗猎车手 V , 50 因此,上面列出的项目是用