我有一个12071行<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8' />
<meta name='viewport' content='width=device-width' />
<title>addTextAfterEvery</title>
<link type='text/css' rel='stylesheet' href='external.css' />
<script type='text/javascript' src='external.js'></script>
</head>
<body>
<div class='main'>
<h1>My Day at the Park</h1>
<p>I had a great day at the park today.</p>
<p>It was very fun, and I would like to go again soon.</p>
</div>
</body>
</html>
的数据框。我正在尝试为foo
的每一行生成基于1:K的单个随机值,并将其插入到新列L中。例如,第一行应该给出介于1之间的L值5,第二个应该给出1到9之间的值,第三个应该给出1到3之间的值,依此类推。这些值必须是整数,因此我尝试使用foo
。每行内的任何整数都有相同的选择概率。
我已经减少了代码中的列数,因为它们无关紧要,而且我在示例中遇到数据包装问题。列A和K是链接的,因此列A中的字符串在列K中始终具有相同的值。由于列A值不唯一,因此存在重复的A / K组合。
数据(减少列数):
sample()
我无法让我的代码工作。对于data.frame中的每一行,我无法计算出将新的最大值传递给A B C D E F G ... K
A011100 F 7 Partnered 4 40-49 Hrs 0.04075 5
A011200 M 7 Partnered 4 40-49 Hrs 0.13334 9
A011400 F 8 Non-partnered 2 30-39 Hrs 0.02310 3
A011500 F 4 Non-partnered 4 1-9 Hrs 0.94519 4
A012100 M 8 Partnered 4 40-49 Hrs 0.78114 4
的逻辑,并在每一行中正确构造它。
我尝试了以下内容:
sample()
这给了:
match.fun(FUN)出错: 'sample(1:foo $ K,1)'不是函数,字符或符号 另外:警告信息: 在1:foo $ K: 数值表达式有12071个元素:只使用第一个
然后
foo$L <- lapply(foo, sample(1:foo$K,1))
并且错误来自:
foo$L <- lapply(foo, function(x) sample(1:foo$K,1))
中的错误($<-.data.frame
,L,值=列表(A = 1L,: 更换有12行,数据有12071 另外:有12个警告(使用警告()来查看它们)
然后
*tmp*
那给了
有50个或更多警告(使用警告()查看前50个
答案 0 :(得分:3)
我们可以使用sample
sapply
df$L <- sapply(df$K, function(x) sample(x, 1))
# A B C K L
#1 A011100 F 7 5 1
#2 A011200 M 7 9 7
#3 A011400 F 8 3 2
#4 A011500 F 4 4 2
#5 A012100 M 8 4 1
取自?sample
如果x的长度为1,则为数字(在is.numeric意义上),x> = 1,则样本采样从1:x开始。
因此,对于df$K
的每个值,我们会从1:x
中的sapply
对其进行抽样,然后随机选择其中一个值。
PS - 为了简化和提高可视性,我进一步减少了列。
答案 1 :(得分:2)
我认为Ronak Shah的答案比我的好,但对于A B C D E F G K L
A011100 F 7 Partnered 4 40-49 Hrs 0.04075 5 4
A011200 M 7 Partnered 4 40-49 Hrs 0.13334 9 7
A011400 F 8 Non-partnered 2 30-39 Hrs 0.02310 3 1
A011500 F 4 Non-partnered 4 1-9 Hrs 0.94519 4 3
A012100 M 8 Partnered 4 40-49 Hrs 0.78114 4 1
解决方案,请尝试:
<?php
include('session.php');
$name=$_POST['name'];
$category=$_POST['category'];
$price=$_POST['price'];
$supplier=$_POST['supplier'];
$qty=$_POST['qty'];
if($qty == 0){
echo "<script language='JavaScript'>
window.alert('Quantity cannot be 0')
window.location.href='product.php';</script>";
exit;
}
if($price == 0){
echo "<script language='JavaScript'>
window.alert('Price cannot be 0')
window.location.href='product.php';</script>";
exit;
}
$fileInfo = PATHINFO($_FILES["image"]["name"]);
if (empty($_FILES["image"]["name"])){
$location="";
}
else{
if ($fileInfo['extension'] == "jpg" OR $fileInfo['extension'] == "png") {
$newFilename = $fileInfo['filename'] . "_" . time() . "." . $fileInfo['extension'];
move_uploaded_file($_FILES["image"]["tmp_name"], "../upload/" . $newFilename);
$location = "upload/" . $newFilename;
}
else{
$location="";
?>
<script>
window.alert('Photo not added. Please upload JPG or PNG photo only!');
</script>
<?php
}
}
mysqli_query($conn,"insert into product (product_name,categoryid,product_price,product_qty,photo, supplierid) values ('$name','$category','$price','$qty','$location', '$supplier')");
$pid=mysqli_insert_id($conn);
mysqli_query($conn,"insert into inventory (userid, action, productid, quantity, inventory_date) values ('".$_SESSION['id']."', 'Add Product', '$pid', '$qty', NOW())");
?>
<script>
window.alert('Product added successfully!');
window.history.back();
</script>
<?php
?>
输出:
SELECT
t1.*, (select t2.Category from Table2 as t2 where t2.ticket_id = t1.ticket_id limit 1) as Category
FROM
Table1 as t1